我正在尝试使用现有Mysql数据库中的JPA / Hibernate创建一个新的Play应用程序。
持久性文件中的 hibernate.hbm2ddl.auto
设置为“update”。
我的帖子帖子有6个条目。
问题是当我执行像"SELECT p FROM Posts p"
这样的HQL语句时,我得到一个空结果,而如果我执行像"SELECT * FROM posts"
这样的本机查询,我就得到了现有的条目。
我认为我在这里遗漏了一些巨大的东西,比如hibernate的内部缓存系统或其他东西,是否有类似的东西可以解释这个空洞的结果? 当从现有数据库使用时,Hibernate是否必须构建一些特定的缓存,以便它使用HQL语句返回正确的结果?为什么需要这样的东西?
答案 0 :(得分:1)
我的帖子帖子有6个条目。问题是当我执行像“SELECT p FROM Posts p”这样的HQL语句时,我得到一个空结果,而如果我执行像“SELECT * FROM posts”这样的本机查询,我得到了现有的条目。
这听起来像你必须定义从mysql表到jpa实体的映射。您可以使用hibernate工具自动生成它们(比如查看示例here如何使用Eclipse插件执行此操作)。
之后您应该从查询中获得一些结果,Hibernate将在此过程中填充其缓存。