有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java JPA以从y选择*的形式插入x(HQL)

我对JPA的了解还不到一周,如果这是一个愚蠢的问题,请容忍我

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

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

现在我想把这个xList的元素存储到Y表中。 因此,我想使用YHome类的persist方法遍历列表并将元素插入Y表

现在X和Y是不同表的不同DTO(bean)。 所以它不允许我像预期的那样插入X对象

当然,我不能用演员阵容,因为没有亲子关系。 HQL中是否有可能实现这一点。 除非对于每条记录,在调用persist()之前,我必须使用X的getter并将它们设置为使用Y的setter

有现成的解决方案吗


共 (1) 个答案

  1. # 1 楼答案

    我想先试试这个:

    @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();