복붙노트

[SPRING] Spring Hibernate가있는 시퀀스에서 다음 값 얻기

SPRING

Spring Hibernate가있는 시퀀스에서 다음 값 얻기

내 Oracle 데이터베이스에 entite 저장하려면 최대 절전 모드로 spring jpa 저장소를 사용하고 있습니다. Spring-Hibernate를 사용하여 oracle 데이터베이스 시퀀스의 다음 값을 얻는 방법은 무엇입니까?

이것은 내 이벤트 클래스입니다.

@Entity
public class Event {

  @Id
  @GeneratedValue(strategy = GenerationType.AUTO)
  private Long id;

  private Long seriesId;

  private String description;

  public Event() {
  }

  public Long getId() {
    return id;
  }

  public void setId(Long id) {
    this.id = id;
  }

  public Long getSeriesId() {
    return seriesId;
  }

  public void setSeriesId(Long seriesId) {
    this.seriesId = seriesId;
  }

  public String getDescription() {
    return description;
  }

  public void setDescription(String description) {
    this.description = description;
  }
}

이벤트 리졸버의 모든 이벤트 시리즈에 대해 시퀀스의 다음 값을 한 번 가져와야합니다.

public class EventResolver {

    @Autowired
    private EventRepository eventRepository;

    public void createSeriesOfEvents(List<EventAPI> eventsToCreate){

        Long seriesId = null; // TODO: Get the series id from database sequence

        for (EventAPI currEvent : eventsToCreate){
            Event newEvent = new Event();
            newEvent.setDescription(currEvent.description);
            newEvent.setSeriesId(seriesId);
            eventRepository.save(newEvent);
        }

    }
}

모든 종류의 도움에 감사드립니다 ..

해결법

  1. ==============================

    1.마지막으로 Spring에서 내 문제를 해결했습니다. JpaRepository에 기본 쿼리를 추가하면됩니다.

    마지막으로 Spring에서 내 문제를 해결했습니다. JpaRepository에 기본 쿼리를 추가하면됩니다.

    public interface EventRepository extends JpaRepository<Event, Long> {
    
     @Query(value = "SELECT seq_name.nextval FROM dual", nativeQuery = 
            true)
     Long getNextSeriesId();
    
  2. ==============================

    2.JPA에서이 방법을 사용할 수 있습니다.

    JPA에서이 방법을 사용할 수 있습니다.

    Query q = em.createNativeQuery("select seq_name.nextval from dual");
    return (Long)q.getSingleResult();
    
  3. ==============================

    3.id 속성에 주석 달기 :

    id 속성에 주석 달기 :

    @Id
    @GeneratedValue(generator = "idSequence")
    @SequenceGenerator(schema = "MYORASCHEMA", name = "idSequence", sequenceName = "MY_ORACLE_SEQ_NAME", allocationSize = 1)
    @Column(name="ID")
    private Long id;
    
  4. from https://stackoverflow.com/questions/46240529/getting-next-value-from-sequence-with-spring-hibernate by cc-by-sa and MIT license