JPA-插入选择-复制大量记录
我想复制具有不同键值的记录。最好的方法是什么? 在纯sql中,我将执行以下操作:JPA-插入选择-复制大量记录,jpa,jpql,named-query,Jpa,Jpql,Named Query,我想复制具有不同键值的记录。最好的方法是什么? 在纯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.jpqleexception,在搜索了编写它的方法之后,我明白了此sql不能在Nam
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.jpqleexception
,在搜索了编写它的方法之后,我明白了此sql不能在NamedQuery
中编写-正确吗
我还尝试了在代表tableX的对象列表中循环,对于我所做的每个对象,em.find()
,或者创建了一个新对象,然后用em.persist
插入它,但这似乎是一种低效的方法。(使用“查找”时,我会对每个对象进行选择,因此,如果我有一个包含2000条记录的列表,那么创建2000条选择,然后使用新的键值插入是有意义的)
所以我的问题是,实现复制所有记录的最佳方法是什么?
另外,如果我遇到异常,或者出现了问题,我希望回滚,这样我就不会在数据库表中只有部分记录
提前感谢。您可以通过本机查询使用JPA中的任何SQL。SQL最适合这种类型的插入 如果在插入数据之前需要在Java中对其执行任何操作,那么可以查询对象,然后插入它们。启用批写入以提高效率