【问题标题】:session.get() returning null in hibernatesession.get() 在休眠中返回 null
【发布时间】:2011-10-30 21:15:29
【问题描述】:

我正在使用 hibernate 和 mysql,并且我可以通过 hibernate 将数据放入数据库中,但是当我尝试检索数据时它总是返回 null...

Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
User user = (User) session.get(User.class, username);
session.getTransaction().commit();

User 是一个带有注释的类,但变量 user 将始终为 null,即使我将一个我知道存在于 DB 中的用户名放入。用户名是表的ID,所以它应该找到它

编辑

我可以在配置中使用<property name="hbm2ddl.auto">create</property> 吗?我应该使用什么,以便数据库仅在表不存在时才创建表?

【问题讨论】:

  • session.get() 时生成的 SQL 是什么,您是否将 hibernate.show.sql 设置为 true
  • 谢谢,当我把它放进去时,我得到: Hibernate: drop table if exists user Hibernate: create table user (username varchar(255) not null, age integer, name varchar(255), password varchar(255), sex varchar(255), surname varchar(255), primary key (username)) 当它这样做时:Session session = HibernateUtil.getSessionFactory().getCurrentSession();因此它正在重新创建表:S

标签: java mysql database hibernate session


【解决方案1】:

创建架构选项将删除所有现有数据!
查看文档:here

以下是指定的选项:

  • validate:验证架构,但不会对数据库进行任何更改。
  • update:更新架构。
  • create:创建架构,销毁以前的数据。
  • create-drop:在会话结束时删除架构。

尝试使用update 版本。其余代码 sn-p 对我来说看起来不错。

希望对你有帮助

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2014-12-28
  • 2018-02-19
  • 1970-01-01
  • 2016-09-20
  • 2016-08-25
  • 1970-01-01
  • 1970-01-01
  • 2017-02-18
相关资源
最近更新 更多