如果id
中的字段Entity
是这样的
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
然后当我persist
实体时,会创建一个唯一的随机ID。有没有办法可以在persist
答案 0 :(得分:2)
规范中没有,尽管某些实现可能提供一种手段。问题是在某些情况下,数据库是由序列或自动增量生成的。对于JPA而言,确切地知道该怎么做是非常具有挑战性的。
答案 1 :(得分:1)
如果您不知道自己计划使用ID做什么,我发现这个link可能会有所帮助。我会编写一个自定义序列类,只调用超级方法来生成id,然后在你拥有它之后做你需要做的事情。
答案 2 :(得分:1)
在EclipseLink中,你可以这样做,
Number nextId = entityManager.unwrap(Session.class).getNextSequenceNumberValue(MyEntity.class);
答案 3 :(得分:0)
@Harry Pham 请参阅Eclipselink用户指南:
http://wiki.eclipse.org/EclipseLink/UserGuide/JPA/Basic_JPA_Development/Entities/Ids/GeneratedValue
在底部,它说明了詹姆斯已经说过的话。您可以使用以下代码获取下一个序列号值:
long id = em.unwrap(Session.class).getNextSequenceNumberValue(Employee.class).longValue();
Session类位于org.eclipselink.persistence.Sessions包中。
但使用这个是eclipselink专有而不是JPA。