我想复制具有不同键值的记录。最好的方法是什么?在普通的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
并在搜索了一种编写方式后,我了解到无法在内部编写此 sql NamedQuery
- 对吗?
我还尝试遍历表示 tableX 的对象列表,并为我所做的每个对象em.find()
或创建一个新对象,然后将其插入em.persist
- 但这似乎是一种低效的方式。(当使用 find 我为每个对象做一个选择,所以如果我有一个包含 2000 个记录的列表,那么创建 2000 个选择然后插入新的键值是没有意义的)。
所以我的问题是实现复制所有记录的最佳方法是什么?另外,如果我遇到异常或出现问题,我想回滚,这样我的数据库表中就不会只有部分记录了。
提前致谢。