JPA插入x作为从y中选择*(HQL)



我对JPA的了解还不到一周,如果这是一个愚蠢的问题,请耐心等待。

我有两个具有相同模式的表X和Y,

我使用XHome类的findById方法,如果结果通过了一些检查,我会将其添加到int List-xList中。现在,如果X表有100行,xList最终会有近10条记录。

现在,我想将xList的元素存储到Y表中。因此,我想使用YHome类的persistent方法迭代列表并将元素插入Y表中。

现在X和Y是不同表的不同DTO(bean(。所以它不允许我插入X对象,正如它所期望的那样。

当然,我不能用选角,因为没有父子关系。HQL有没有可能做到这一点。除非对于每条记录,我必须使用X的getter,并在调用persist((之前将它们设置为使用Y的setter。

有现成的解决方案吗?

我会先试试这个:

@Entity
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
public class Entity1 {
@Id private int id;

@Entity
public class Entity2 extends Entity1 {

使用它:

tx.begin();
Entity1 entity1 = new Entity1();
entity1.setId(1);
em.persist(entity1);
entity1 = new Entity1();
entity1.setId(2);
em.persist(entity1);
tx.commit();
em.clear();
tx.begin();
Query q = em.createQuery("insert into Entity2(id) select e.id from Entity1 e");
int res = q.executeUpdate();
System.out.println("Count = " + res);
tx.commit();
em.close();

最新更新