我有2个表TABLE1和TABLE2.Table1有名字,Table2有电子邮件和电话。
要获取姓名,电子邮件和电话,我查询如下
query = entityManagerUtil.createNativeQuery("select s.Name,c.Phone1,c.Email1 from Table1 s,Table2 c where c.id= s.NodeID and s.NodeID =21")
现在我的下一个要求是更新名称,电子邮件和电话。由于这些参数存在于不同的表中,因此我正在搜索将更新2个表的单个查询。不幸的是我使用的是sql server而且{{3} }
所以我想使用@Transactional和2个查询更新2个表,如下面的
@Transactional
public void updateDetails()
{
Query query1= entityManagerUtil.entityManager.createNativeQuery("update Table1 set Name='' where id in (select NodeID from Table 2) and NodeID=21");
Query query2= entityManagerUtil.entityManager.createNativeQuery("update Table2 set Email='' and phone1='' where NodeID in (select id from Table 2) and NodeID=21");
query1.executeUpdate();
query2.executeUpdate();
}
还有其他更好的方法来更新2个表吗?
答案 0 :(得分:0)
您可以使用JDBCTemplate
http://sujitpal.blogspot.com.es/2007/03/spring-jdbctemplate-and-transactions.html
它允许使用一个连接进行多个查询,因此您可以节省一些时间而不是两次。
答案 1 :(得分:0)
为什么不使用Hibernate实体呢?只需加载与Table1和table2关联的实体,修改它们并让automatic dirty checking机制代表您更新表。这就是顺便使用ORM的一个原因。