如何从现有数据库正确实施 Hibernate?

How to properly implements Hibernate from an already existing database?

我正在尝试使用来自现有 Mysql 数据库的 JPA/Hibernate 创建一个新的 Play 应用程序。

持久性文件中的

hibernate.hbm2ddl.auto 设置为 "update"。

我的 table 帖子有 6 个条目。 问题是当我执行像 "SELECT p FROM Posts p" 这样的 HQL 语句时,我得到了一个空结果,而如果我执行像 "SELECT * FROM posts" 这样的本机查询,我得到了我现有的条目。

我想我在这里漏掉了很多东西,比如 hibernate 的内部缓存系统之类的,有没有类似的东西可以解释这个空结果? 当从现有数据库使用时,Hibernate 是否必须构建一些特定的缓存,以便它 returns 使用 HQL 语句更正结果?为什么需要这样的东西?

My table posts has 6 entries. Problem is when I execute an HQL statement like "SELECT p FROM Posts p", I got an empty result, while if I execute a native query like "SELECT * FROM posts" I got my existing entries.

这听起来好像您必须定义从 mysql 表到 jpa 实体的映射。您可以使用休眠工具自动生成它们(如查看示例 here 了解如何使用 Eclipse 插件执行此操作)。

之后你应该从你的查询中得到一些结果,Hibernate 将一路填充它的缓存。