我对JPA的了解不到一周,如果这是一个愚蠢的问题,请多多包涵。
我有两个具有相同模式的表X和Y
我使用XHome类的findById方法,如果结果通过了一些检查,则将其添加到int List xList中。 现在,如果X表有100行,则xList最终将拥有近10条记录。
现在,我想将此xList的元素存储到Y表中。 所以我想遍历列表,并使用YHome类的persist方法将元素插入到Y表中。
现在X和Y是不同表的不同DTO(bean)。 因此它不允许我插入X对象,因为它期望Y。
当然,由于没有父子关系,我当然不能使用强制转换。 在HQL中有可行的方法吗? 除非对于每条记录,否则在调用persist()之前,必须使用X的getter并将其设置为使用Y的setter。
有没有现成的解决方案?
答案 0 :(得分:0)
我会以此为起点:
@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();