2017-12-12 5 views
0

jpa를 사용하여 db에 객체를 저장할 때 시퀀스 번호를보고 싶습니다.jpa의 show_sql 속성을 사용하는 동안 시퀀스 번호를 인쇄하는 방법

코드 :

@Id 
@GeneratedValue(strategy = GenerationType.AUTO, generator = "SEQ") 
@SequenceGenerator(name = "SEQ", sequenceName = "Temp_SEQ") 

재산권 : 나는 아래와 같은 결과를 볼 수

logging.level.org.hibernate.SQL=DEBUG 
logging.level.org.hibernate.type=TRACE 

,

insert into employee (emp_number, acquire, reason) values (null, ?, ?) 
2017-12-12 14:36:20.634 TRACE 21048 --- [nio-8080-exec-8] o.h.type.descriptor.sql.BasicBinder  : binding parameter [1] as [VARCHAR] - [YES] 
2017-12-12 14:36:20.635 TRACE 21048 --- [nio-8080-exec-8] o.h.type.descriptor.sql.BasicBinder  : binding parameter [2] as [VARCHAR] - [asdf] 

하지만 난으로 너무 일련 번호를 기대하고,

insert into case_selection (case_number, acquire, reason) values (null, ?, ?) 
binding parameter [1] as [Long] - [1] 
binding parameter [1] as [VARCHAR] - [YES] 
binding parameter [1] as [VARCHAR] - [asdf] 

최대 절전 모드 또는 JPA의 경우 시퀀스 번호가 인쇄 될 수 있습니까?

+0

내 질문을 볼 수 있습니다 - 나는 속성을 사용했지만 아직 해결책이 없습니다. – abc

+0

예, 제 잘못입니다. 그래서 당신은 여전히'values ​​(null,?,?)'를 얻게됩니까? ID가 해당 단계에서 null이고 나중에 채워지기 때문에 바인딩에 표시되지 않는다고 생각해보십시오. – pirho

+0

예. 나는 그 가치를 볼 수있는 방법이 있다고 생각합니다. – abc

답변

0

사실 나는 다른 방법으로 해결책을 발견했습니다.

이것은 데이터베이스에서 가져온 것입니다.

SELECT seqname.CURRVAL FROM dual 

이 쿼리는 현재 값이 무엇인지 알려줍니다.

@Priho : 도움 주셔서 감사합니다.

0

코드를 표시하지 않았습니다.

(첫 번째는 옆으로 : 당신은 INSERT INTO T(pk, ...) VALUES(NULL, ...) 일을 할 것, 내가 생성 된 기본 키를 나열하는 일을 적이 없다.) 나는 새 엔티티 (INSERT)를 저장하는 저장소를 사용하는

, 다음 업데이트 됨 엔티티가 반환됩니다. 뭔가의 라인에 :

assert entity.id = null; 
entity = repository.save(entity); 
assert entity.id != null;