Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate:当一列具有一对多关系,而另一列未使用IDClass时,如何在组合键中持久化数据?_Hibernate_Jpa_Hibernate Mapping_Composite Key - Fatal编程技术网

Hibernate:当一列具有一对多关系,而另一列未使用IDClass时,如何在组合键中持久化数据?

Hibernate:当一列具有一对多关系,而另一列未使用IDClass时,如何在组合键中持久化数据?,hibernate,jpa,hibernate-mapping,composite-key,Hibernate,Jpa,Hibernate Mapping,Composite Key,以下是用例: 复合密钥类 public class AgreementPeriodID implements Serializable { private static final long serialVersionUID = 1L; @Column(name = "PERIODID") private String pid; @ManyToOne @JoinColumn(name = "AGRID") private CustomerAg

以下是用例:

复合密钥类

public class AgreementPeriodID implements Serializable {

    private static final long serialVersionUID = 1L;

    @Column(name = "PERIODID")
    private String pid;

    @ManyToOne
    @JoinColumn(name = "AGRID")
    private CustomerAgreement customerAgreement;

}
多对一类

@IdClass(AgreementPeriodID.class)
public class CustomerAgreementPeriod  implements Serializable {
    private static final long serialVersionUID = 1L;

    @Id
    @ManyToOne
    @JoinColumn(name = "AGRID")
    private CustomerAgreement customerAgreement;

    @Id
    @Column(name = "PERIODID")
    private String pid;
一对多主类:

  public class CustomerAgreement implements Serializable {

    @OneToMany(mappedBy = "customerAgreement", orphanRemoval = true, fetch = FetchType.LAZY, cascade = {CascadeType.PERSIST})
    private List<CustomerAgreementPeriod> agreementPeriods;
公共类CustomerAgreement实现可序列化{
@OneToMany(mappedBy=“customerAgreement”,orphanRemoving=true,fetch=FetchType.LAZY,cascade={CascadeType.PERSIST})
私人名单协议期限;
主要类别:

 public static List<CustomerAgreement> ra() {
        List<CustomerAgreement> li = new ArrayList<CustomerAgreement>();
        CustomerAgreement cAgreement = new CustomerAgreement();
        cAgreement.setId(321212121l);
        cAgreement.setName("Harpreet");;
        cAgreement.setCustomerId("140");

        List<CustomerAgreementPeriod> cap = new ArrayList<>();
        CustomerAgreementPeriod capy = new CustomerAgreementPeriod();
        capy.setPid("1");
        capy.setValidFrom(new Date());
        capy.setValidTo(new Date());
        capy.setCustomerAgreement(cAgreement);

        CustomerAgreementPeriod capy2 = new CustomerAgreementPeriod();
        capy2.setPid("2");
        capy2.setValidFrom(new Date());
        capy2.setValidTo(new Date());
        capy2.setCustomerAgreement(cAgreement);

        cap.add(capy);
        cap.add(capy2);
        cAgreement.setAgreementPeriods(cap);
        li.add(cAgreement);


        CustomerAgreement cAgreement2 = new CustomerAgreement();
        cAgreement2.setId(321212122l);
        cAgreement2.setName("Harpreet");;
        cAgreement2.setCustomerId("140");

        List<CustomerAgreementPeriod> cap1 = new ArrayList<>();
        CustomerAgreementPeriod capy1 = new CustomerAgreementPeriod();
        capy1.setPid("1");
        capy1.setValidFrom(new Date());
        capy1.setValidTo(new Date());
        capy1.setCustomerAgreement(cAgreement2);

        CustomerAgreementPeriod capy23 = new CustomerAgreementPeriod();
        capy23.setPid("2");
        capy23.setValidFrom(new Date());
        capy23.setValidTo(new Date());
        capy23.setCustomerAgreement(cAgreement2);

        cap1.add(capy1);
        cap1.add(capy23);
        cAgreement2.setAgreementPeriods(cap1);
        li.add(cAgreement2);

        CustomerAgreement cAgreement3 = new CustomerAgreement();
        cAgreement3.setId(321212123l);
        cAgreement3.setName("Harpreet");;
        cAgreement3.setCustomerId("140");

        List<CustomerAgreementPeriod> cap12 = new ArrayList<>();
        CustomerAgreementPeriod capy12 = new CustomerAgreementPeriod();
        capy12.setPid("1");
        capy12.setValidFrom(new Date());
        capy12.setValidTo(new Date());
        capy12.setCustomerAgreement(cAgreement3);

        CustomerAgreementPeriod capy234 = new CustomerAgreementPeriod();
        capy234.setPid("2");
        capy234.setValidFrom(new Date());
        capy234.setValidTo(new Date());
        capy234.setCustomerAgreement(cAgreement3);

        cap12.add(capy12);
        cap12.add(capy234);
        cAgreement3.setAgreementPeriods(cap12);
        li.add(cAgreement3);
        return li;
    }
    public static void main(String[] args) {

        EntityManagerFactory emf = Persistence.createEntityManagerFactory("IntegratorMasterdataPU");
        em = emf.createEntityManager();
//        CustomerAgreement cAgreement = em.find(CustomerAgreement.class, 32121212l);
//        em.getTransaction().begin();
//        em.remove(cAgreement);
//        em.getTransaction().commit();
        em.getTransaction().begin();
        for(CustomerAgreement ca: ra()) {

            em.persist(ca);

        }
        em.flush();


//        
    }
公共静态列表ra(){
List li=new ArrayList();
CustomerAgreement=新CustomerAgreement();
卡格里门特.塞蒂(32121L);
cAgreement.setName(“Harpreet”);;
cAgreement.setCustomerId(“140”);
列表上限=新的ArrayList();
CustomerAgreementPeriod capy=新CustomerAgreementPeriod();
capy.setPid(“1”);
capy.setValidFrom(新日期());
capy.setValidTo(新日期());
capy.设置客户协议(cAgreement);
CustomerAgreementPeriod capy2=新CustomerAgreementPeriod();
capy2.setPid(“2”);
capy2.setValidFrom(新日期());
capy2.setValidTo(新日期());
capy2.设置客户协议(cAgreement);
第2章增补(capy);
第2章增补(第2章);
协议期限(上限);
li.添加(cAgreement);
CustomerAgreement2=新CustomerAgreement();
cAgreement2.setId(3212122l);
cAgreement2.setName(“Harpreet”);;
cAgreement2.setCustomerId(“140”);
List cap1=new ArrayList();
CustomerAgreementPeriod capy1=新CustomerAgreementPeriod();
capy1.setPid(“1”);
capy1.setValidFrom(新日期());
capy1.setValidTo(新日期());
capy1.设置客户协议(cAgreement2);
CustomerAgreementPeriod capy23=新CustomerAgreementPeriod();
capy23.设置PID(“2”);
capy23.setValidFrom(新日期());
capy23.setValidTo(新日期());
capy23.设置客户协议(cAgreement2);
第1章.增补(第1章);
第1章.增补(第23章);
cAgreement2.设定协议期限(cap1);
li.添加(cAgreement2);
CustomerAgreement3=新CustomerAgreement();
cAgreement3.setId(3212123l);
cAgreement3.setName(“Harpreet”);;
cAgreement3.设置客户ID(“140”);
List cap12=新的ArrayList();
CustomerAgreementPeriod capy12=新CustomerAgreementPeriod();
capy12.设置PID(“1”);
capy12.setValidFrom(新日期());
capy12.setValidTo(新日期());
capy12.设置客户协议(cAgreement3);
CustomerAgreementPeriod capy234=新CustomerAgreementPeriod();
capy234.设定PID(“2”);
capy234.setValidFrom(新日期());
capy234.setValidTo(新日期());
capy234.设置客户协议(cAgreement3);
第12章.增补(第12章);
第12章.增补(第234章);
cAgreement3.设定协议期限(第12章);
li.添加(cAgreement3);
返回李;
}
公共静态void main(字符串[]args){
EntityManagerFactory emf=Persistence.createEntityManagerFactory(“IntegratorMasterdataPU”);
em=emf.createEntityManager();
//CustomerAgreement=em.find(CustomerAgreement.class,321212L);
//em.getTransaction().begin();
//em.remove(cAgreement);
//em.getTransaction().commit();
em.getTransaction().begin();
对于(CustomerAgreement ca:ra()){
em.persist(ca);
}
em.flush();
//        
}
它显示所有Insert语句,但不在数据库中持久化数据?
我缺少什么吗?

您不需要提交事务吗?刷新!=提交。@AlanHay:正确