【发布时间】:2015-01-23 10:12:30
【问题描述】:
我正在使用没有 Spring 的 Hibernate 4.3.8。我正在使用 Hibernate 的会话 API。我有一个实体类Category,我已经用@Entity、@Table、@Id、@Column 等正确地注释了它。我不使用 .hbm.xml 描述符文件,我只想使用我的域/实体 java 源/类文件中的注释。
1) 好的,我用这种方式创建我的休眠SessionFactory:
Configuration configuration = new Configuration().configure();
// configuration.addClass(Category.class);
StandardServiceRegistryBuilder builder =
new StandardServiceRegistryBuilder().applySettings(configuration.getProperties());
configuration.addPackage("com.test.db.domain");
factory = configuration.buildSessionFactory(builder.build());
2) 然后当我尝试这个时:
session.createCriteria(Category.class).list();
我只是得到一个空列表(我希望得到数据库表中的所有类别)。 Category 类在 com.test.db.domain 包中。
这可能是什么原因?我被困了将近一天。
3) 请注意,如果我使用session.createSQLQuery,我可以连接到我的数据库并获取所有类别。
4) 另请注意,我不想使用 Hibernate 的 EntityManager API、JPA 和与 JPA 相关的 XML 描述符。
【问题讨论】:
-
你不能使用内存中的测试数据库来测试 RESOURCE_LOCAL 吗?然后你可以简单地做
createQuery().getResultList()并得到所有的结果。 -
@ha9u63ar 谁说我使用内存数据库?我使用 MySQL。另外,我没有指定 RESOURCE_LOCAL。我可以在没有 persistence.xml 的情况下做我想做的事吗?或者这是不可能的?此外,
Criteria没有方法getResultList。我正在尝试运行Criteria,而不是Query -
这不是建议,只是一个问题。另外,您在调用 session.createCritera(Category.class).list() 之前是否添加了任何记录? JBoss 文档在这里有一个例子 - docs.jboss.org/hibernate/orm/3.3/reference/en/html/…
-
@ha9u63ar 哦,我明白了。好吧,这不是我想要做的。我试图不使用persistence.xml,只使用Session API 和注释而不是hbm.xml 映射文件。
-
@ha9u63ar 我有记录,请从我的问题中阅读第 3 项。
标签: java hibernate hibernate-4.x