Hibernate 类未映射
我在配置hibernate以从DB获取所有实体的列表时遇到问题。我错过了一些东西,但不知道是什么。这是我的实体和cfg.xml配置文件: 我对将实体插入数据库没有问题,只对从数据库获取实体有问题。 实体如下所示:Hibernate 类未映射,hibernate,jpa,Hibernate,Jpa,我在配置hibernate以从DB获取所有实体的列表时遇到问题。我错过了一些东西,但不知道是什么。这是我的实体和cfg.xml配置文件: 我对将实体插入数据库没有问题,只对从数据库获取实体有问题。 实体如下所示: @Entity public class Person { @Id @GeneratedValue private long id; private String name; private int age; {getters s
@Entity
public class Person {
@Id
@GeneratedValue
private long id;
private String name;
private int age;
{getters setters}
@Override
public String toString() {
return "Person [id=" + id + ", name=" + name + ", age=" + age + "]";
}
}
和主要类别:
public static void main(String[] args) {
EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("myh2");
EntityManager entityManager = entityManagerFactory.createEntityManager();
createPerson(entityManager);
Configuration configuration = new Configuration().configure();
StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder().
applySettings(configuration.getProperties());
SessionFactory factory = configuration.buildSessionFactory(builder.build());
Session session = factory.openSession();
String hql = "select p from " + Person.class.getSimpleName() + " p";
List<Person> list = (List<Person>) session.createQuery(hql).list();
System.out.println(list);
session.close();
entityManager.close();
entityManagerFactory.close();
}
publicstaticvoidmain(字符串[]args){
EntityManagerFactory EntityManagerFactory=Persistence.createEntityManagerFactory(“myh2”);
EntityManager EntityManager=EntityManager工厂。createEntityManager();
createPerson(实体管理器);
配置=新配置().configure();
StandardServiceRegistryBuilder=新的StandardServiceRegistryBuilder()。
applySettings(configuration.getProperties());
SessionFactory=configuration.buildSessionFactory(builder.build());
Session Session=factory.openSession();
String hql=“从“+Person.class.getSimpleName()+”p”中选择p”;
List=(List)session.createQuery(hql.List();
系统输出打印项次(列表);
session.close();
entityManager.close();
entityManagerFactory.close();
}
hibernate.cfg.xml文件如下所示(我也尝试添加映射类,但同样的问题也出现了)
org.h2.Driver
jdbc:h2:./db/存储库
1.
org.hibernate.dial.h2方言
org.hibernate.cache.internal.NoCacheProvider
真的
创造
嗯?您创建了EntityManagerFactory,然后关闭并忽略它,然后使用HIbernate会话?!!(以及Hibernate类的硬代码使用)为什么不直接使用EntityManager和JPA,并放弃这个JPA提供程序特定的代码呢谢谢你的建议。现在它可以正常工作了。但我想使用hibernate的二级缓存,我将jpa entityManager与hibernate会话混为一谈。我的错误。
<hibernate-configuration>
<session-factory>
<!-- Database connection settings -->
<property name="connection.driver_class">org.h2.Driver</property>
<property name="connection.url">jdbc:h2:./db/repository</property>
<!-- JDBC connection pool (use the built-in) -->
<property name="connection.pool_size">1</property>
<!-- SQL dialect -->
<property name="dialect">org.hibernate.dialect.H2Dialect</property>
<!-- Disable the second-level cache -->
<property name="cache.provider_class">org.hibernate.cache.internal.NoCacheProvider</property>
<!-- Echo all executed SQL to stdout -->
<property name="show_sql">true</property>
<!-- Drop and re-create the database schema on startup -->
<property name="hbm2ddl.auto">create</property>
<!-- <mapping class="second.level.cache.Person"/> -->
</session-factory>
</hibernate-configuration>