当前位置: 首页 > 面试题库 >

休眠不将对象保存在数据库中?

强承望
2023-03-14
问题内容

我有以下问题,当试图在数据库中插入对象时,Hibernate卡住,没有返回错误,对象没有正确保存。

调试它,我发现它挂在

Hibernate: select nextval('hibernate_sequence')

我正在使用PostgreSQL作为数据库

我的配置文件:

<hibernate-mapping>
    <class name="src.MyClass" table="MyClass">

    <cache usage="read-write"/>

    <id name="id" column="classid">
        <generator class="native" />
    </id>

    <property name="name" column="name" not-null="true" unique="true" length="160"/>

</class>
</hibernate-mapping>

@Override
public void save( Myclass mc)
{
    Session session = sessionFactory.getCurrentSession();

    session.save( mc);
}

SELECT部分​​起作用。

我不确定我缺少什么。同样使用本地SQL插入命令,它也可以工作。


问题答案:

我没看到你这么忙

Session session = sessionFactory.openSession();
session.save(mc);
session.flush();
session.close();

但最可取的是

Session session = factory.openSession();
    Transaction tx = null;
    try {
        tx = session.beginTransaction();
        session.save(mc);
        tx.commit(); // Flush happens automatically
    }
    catch (RuntimeException e) {
        tx.rollback();
        throw e; // or display error message
    }
    finally {
        session.close();
    }


 类似资料:
  • 问题内容: 我正在尝试使用Hibernate插入或更新大数据。我有一个包含350k对象的列表,当我使用Hibernate时,要花费数小时才能插入所有数据。 我正在使用以下代码进行此操作。我的开发环境是JDK1.4和Oracle数据库。 我正在使用批处理更新,还设置了属性50,但这并没有帮助。 我的对象与另一个对象具有一对一的关系,因此在这种情况下使用StatelessSession可能会出现问题。

  • 问题内容: 我希望Hibernate制作数据库文件(SQLite),但前提是不存在。 现在在hibernate.cfg.xml中,有以下一行: 问题是数据库文件一直在创建,即使该文件存在也是如此。 问题答案: 尝试将值切换为

  • 问题内容: 我正在使用Hibernate / Spring应用程序来管理一些电影。 班级电影与班级流派有着多对多的关系。这两个类都使用GeneratedValue注释生成了ID。 使用@Cascade(CascadeType.SAVE_UPDATE)通过电影对象保存了流派。我对流派的type属性(它的名称;例如“ Fantasy”)设置了唯一的约束。 我现在想做的是让Hibernate检查是否已经

  • 问题内容: 我在个人课程和汽车课程之间有一对多的关系。一个人可以拥有许多汽车,反之亦然。我正在使用Restful API发布数据。我的注释和Get服务运行正常,但是我的后服务在每次尝试插入新数据时都抛出“ 。子表插入为” 。 这是我的代码的一部分。 人.java 汽车.java 我的服务等级: 问题答案: 此注释: 有两个后果: 暗示这是关系的拥有方。这意味着,每当要在和之间建立关系时, 都需要通

  • 我有一个实体CandidateTransaction和CandidateTransactionRepository扩展了CrudRepository 我正在使用CrudRepository的save方法来保存所述实体的对象。当实体没有行时,它将创建一个自动生成的键并将其插入ID列,而不需要Java端的干预。 而且,由于CrudRepository的save()方法检查实体是否是新的,如果是新的,它

  • 我正在使用DB2数据库和hibernate框架。有两个表,如Word和Litter,它们的关系是一对多。 > 架构A: 但是这段代码给出了一个异常:JDBCExceptionReporter logExceptions是我正在使用的方法吗?