Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate 类未映射_Hibernate_Jpa - Fatal编程技术网

Hibernate 类未映射

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

我在配置hibernate以从DB获取所有实体的列表时遇到问题。我错过了一些东西,但不知道是什么。这是我的实体和cfg.xml配置文件: 我对将实体插入数据库没有问题,只对从数据库获取实体有问题。 实体如下所示:

@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>