我什么时候能够可靠地知道id
设置了新创建的实体@GeneratedValue
注释的persistence provider
字段?
JPA规范对此并不十分具体。我见过类似的问题,但是他们的答案却各不相同。我知道一旦提交了事务,id就已经设置了,但是如果事务仍然在运行并且我需要id呢?
我怎样才能可靠地获得它?
答案 0 :(得分:0)
可能你可以试试这个。调用flush()方法可能会将未保存的数据推送到数据库。
// Use persist in a transaction
// It doesn't guarantee that the identifier value will be assigned to the persistent instance immediately,
// the assignment might happen at flush time so call the flush method.
public T persist(T obj) {
entityManager.persist(obj);
entityManager.flush();
return obj;
}