我正在尝试使用 JPA 更新现有记录。以下链接似乎表明更新记录的唯一方法是为其编写更新查询在 此处输入链接描述
这很好。但是再次,我想知道为什么我要把它从存储过程中取出来使用开放 JPA 的所有魔力?我想如果我有一个 JPA 对象的实例,如果我尝试使用类似于此的调用持久保存到数据库
emf.persist(launchRet)
JPA 框架将检查记录是否已经存在,如果存在,它将继续对该记录进行更改,如果不存在,它将添加一条新记录。这真的很酷。相反,我将不得不自己在更新查询中编写所有这些逻辑。这很好,但是为什么我不能只使用存储过程并传递所有必要的值呢?
更新:代码解释了我最后的评论是关于什么的
try{
launchRet = emf.find(QuickLaunch.class, launch.getQuickLaunchId());
if(launchRet==null){
emf.getTransaction().begin();
emf.persist(launchRet);
emf.getTransaction().commit();
}
else{
emf.refresh(launchRet);
}
}
变量launch被传递到方法中......
public QuickLaunch UpdateQuickLaunchComponent(QuickLaunch launch)
我会简单地将找到的启动 launchRet 设置为等于传入的启动吗?