Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.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
Java 如何在Hibernate中进行映射_Java_Hibernate_Mapping - Fatal编程技术网

Java 如何在Hibernate中进行映射

Java 如何在Hibernate中进行映射,java,hibernate,mapping,Java,Hibernate,Mapping,我使用没有spring的hibernate,在映射方面有问题。 我有两个实体,User和Enquête,映射代码如下: 恩奎特: @ManyToOne(fetch = FetchType.LAZY) @Cascade(org.hibernate.annotations.CascadeType.ALL); private User responsable; 在用户中: 关于Enquête什么都没有,因为目前还没有地图 当我试图拯救这样一个新的恩奎特时: private static void

我使用没有spring的hibernate,在映射方面有问题。 我有两个实体,User和Enquête,映射代码如下:

恩奎特:

@ManyToOne(fetch = FetchType.LAZY)
@Cascade(org.hibernate.annotations.CascadeType.ALL);
private User responsable;

在用户中:

关于Enquête什么都没有,因为目前还没有地图

当我试图拯救这样一个新的恩奎特时:

private static void addEnqueteInBdd(String titre,Date dateCreation,Date dateFermeture,Boolean cloture,int idEnquete,Formulaire formulaire,User responsable,List<Collecte> collectes) {
        Transaction transaction = null;
        Enquete en = null;
        Session session = HibernateUtil.getSessionFactory().openSession();
        try {
            transaction = session.beginTransaction();           
            en = new Enquete( titre, dateCreation, dateFermeture, cloture, collectes, formulaire,responsable );
            session.save(en);
            transaction.commit();   
        } catch (Exception e) {
            e.printStackTrace();
            if (transaction != null) {
                transaction.rollback();
            }
            e.printStackTrace();
        }
    }
我有一个错误:

错误:HH000346:托管刷新期间出错[行被另一个事务更新或删除,或者未保存的值映射不正确:[Model.User1]]

PS:这是我在代码中使用hibernate的第一个操作,因此我认为这与另一个事务无关。

最有可能的是,您作为参数传递的用户已在另一个事务中检索并分离

尝试先合并该实体,然后执行保存:

        try {
            User responsableMerged = session.merge(responsable);
            transaction = session.beginTransaction();           
            en = new Enquete( titre, dateCreation, dateFermeture, 
                 cloture, collectes, formulaire,responsableMerged );
            session.save(en);
            transaction.commit();   
        }

也不要使用特定于Hibernate的级联。在MAnyToOne上使用标准JPA手机

Hi。我认为用户id也必须保存。尝试将注释@joinColumn添加到用户字段。