Java 在我的例子中,提交JPA事务的最佳方式是什么?
假设我有3个实体模型:Java 在我的例子中,提交JPA事务的最佳方式是什么?,java,hibernate,jpa,transactions,playframework,Java,Hibernate,Jpa,Transactions,Playframework,假设我有3个实体模型: History.class DetilHistory.class Logs.class 我必须这样编写代码: //Create History History h = new History(new Date(), 1, 1, 1); h.save(); //Create Detil History DetilHistory dh = new DetilHistory(1, 1, 1, h.id); dh.save(); //Create Logs Logs l =
History.class
DetilHistory.class
Logs.class
我必须这样编写代码:
//Create History
History h = new History(new Date(), 1, 1, 1);
h.save();
//Create Detil History
DetilHistory dh = new DetilHistory(1, 1, 1, h.id);
dh.save();
//Create Logs
Logs l = new Logs(1,1,1,dh.id);
l.save();
h.closeDate= new Date();
h.value = 2;
h.save();
我必须先拿到h.id才能查到dh的病史。我必须先获得dh.id才能了解l.referendodofdetilHistory
但是,有时我必须更改代码下面的变量h或dh,如下所示:
//Create History
History h = new History(new Date(), 1, 1, 1);
h.save();
//Create Detil History
DetilHistory dh = new DetilHistory(1, 1, 1, h.id);
dh.save();
//Create Logs
Logs l = new Logs(1,1,1,dh.id);
l.save();
h.closeDate= new Date();
h.value = 2;
h.save();
我这样做也是为了记录历史
不幸的是,JPA不能这样做。
我知道JPA不允许这样做的原因
我有以下问题:
- 分离的实体被传递到持久化
- JPA尚未初始化
- 等
- JPAPluginStartTx(rollback)
- JPA.em().flush(); JPA.em().getTransaction().commit();
有人能告诉我怎么做最好吗?你的save()方法是怎么做的?也许您可以尝试获取EntityManager实例,使用em.getTransaction()打开一个事务。开始,然后按顺序保存所有实体,然后提交事务