我希望在使用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的情况下打印序列号吗?
我实际上以不同的方式找到了解决方案。
这是来自数据库。
SELECT seqname.CURRVAL FROM dual
此查询为我们提供了当前值。
@Priho:谢谢你的帮助。
你没有显示代码。
(首先是旁边:你好像在做INSERT INTO T(pk, ...) VALUES(NULL, ...)
;我从来没有这样做,列出生成的主键。)
我使用存储库来保存新实体(INSERT),然后返回更新的实体。有点像:
assert entity.id = null;
entity = repository.save(entity);
assert entity.id != null;