【问题标题】:hiberate 4.3 - entity class instances not returned in listhibernate 4.3 - 列表中未返回实体类实例
【发布时间】: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


【解决方案1】:

问题结果如下:调用configuration.addPackage 并没有达到我最初预期的效果。另见:

hibernate 4.3.x - load all entity annotated classes

与其调用addPackage,不如从他自己的实体/域类中为每个类调用configuration.addAnnotatedClass

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-05
    • 1970-01-01
    • 1970-01-01
    • 2021-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多