我在没有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描述符。
答案 0 :(得分:0)
问题原因如下:调用configuration.addPackage
并不能达到我最初的预期。另见:
hibernate 4.3.x - load all entity annotated classes
不应该调用addPackage
而应该做的是从他自己的实体/域类为每个类调用configuration.addAnnotatedClass
。