【发布时间】:2013-06-16 10:02:06
【问题描述】:
我想复制具有不同键值的记录。最好的方法是什么? 在普通的 sql 中我会这样做:
insert into tableX values (x1,x2,x3,x4,x5) select 2,T1.x2,T1.x3,T1.x4,T1.x5 from tableX T1
(x1 是我的主键)。
我尝试在实体@NamedQuery 中编写此代码,但我得到了org.eclipse.persistence.exceptions.JPQLException,在搜索了一种编写方法后,我了解到无法在NamedQuery 中编写此sql - 对吗?
我还尝试循环遍历表示 tableX 的对象列表,并且对于我所做的每个对象 em.find() 或创建一个新对象,然后使用 em.persist 插入它——但这似乎是一种低效的方式。 (使用 find 时,我为每个对象进行选择,所以如果我有一个包含 2000 条记录的列表,那么创建 2000 条选择然后插入新的键值是没有意义的)。
所以我的问题是实现复制所有记录的最佳方法是什么? 此外,如果我遇到异常或出现问题,我想回滚,这样我的数据库表中就不会只有部分记录了。
提前致谢。
【问题讨论】:
标签: jpa jpql named-query