java - 如何在 Hibernate 中进行映射

标签 java hibernate mapping

我使用hibernate(没有spring),并且我有一个关于映射的问题。 我有 2 个实体,“User”和“Enquête”,具有以下映射代码:

结束:

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

在用户中:

(没有关于 Enquête 的信息,因为目前没有“映射者”)

当我尝试保存一个新的“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();
        }
    }

我有这个错误:

错误:HHH000346:托管刷新期间出错 [行已被另一个事务更新或删除(或未保存值映射不正确):[Model.User#1]]

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

最佳答案

很可能您作为参数传递的User已在另一个事务中检索并已分离。

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

        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

关于java - 如何在 Hibernate 中进行映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57354688/

相关文章:

sql - hibernate 搜索、实体和 SQL View

visual-studio - 尽管该文件夹位于我的本地驱动器(本地副本)中,但解决方案资源管理器未显示该文件夹(Visual Studio)

arrays - 将 Range 直接映射到 Array

java - Spring SFTP集成Session写入方法

java - Tomcat(没有热部署)可以忽略覆盖的jar吗

hibernate - 为特定查询禁用 Hibernate 二级缓存读取或更新

json - 在go中解析动态json

java - 安卓工作室 : ListView On Touch Event

java - Android JSON 与 REST

java - play 创建字段按字母顺序排序的表