如何在使用jpa的show_sql属性时打印序列号

时间:2017-12-12 09:26:05

标签: java spring hibernate jpa

我希望在使用jpa将对象保存到db时看到序列号。

代码:

@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的情况下打印序列号吗?

2 个答案:

答案 0 :(得分:0)

我实际上以不同的方式找到了解决方案。

这是来自数据库。

SELECT seqname.CURRVAL FROM dual

此查询为我们提供了当前值。

@Priho:谢谢你的帮助。

答案 1 :(得分:0)

您没有显示代码。

(首先是旁边:你似乎正在做INSERT INTO T(pk, ...) VALUES(NULL, ...);我从未这样做,列出了生成的主键。)

我使用存储库来保存新实体(INSERT),然后返回更新的实体。以下内容:

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