java - 创建记录导致 org.hibernate.MappingException : Unknown entity

标签 java database hibernate jdbc

我试图在表中创建一条记录,但它给了我以下异常。

org.hibernate.MappingException: Unknown entity: com.Person

我的 get(Person person) 方法工作正常并返回结果。

DAO 类:

public void create(Person person){
    Session session = HibernateUtil.getSession();
    Transaction tx = session.beginTransaction();

    session.save(person);//----------------------->this throws exception
    session.flush();
    tx.commit();
    session.close();
}

public List<Person> get(Person person){
    criteria = createCriteria("person");
    criteria.add(Restrictions.eq("person", person.getFirstName()));
    return criteria.list();     
}

hibernate.cfg.xml 文件:

<hibernate-configuration>
    <session-factory>
        //other database properties
        <mapping resource="com/Person.hbm.xml" />
    </session-factory>
</hibernate-configuration>

Person.hbm.xml 文件:

<hibernate-mapping default-lazy="false">
    <class name="com.Person" table="Person" entity-name="person">
        <id name="personId" type="integer" column="PERSON_ID">
            <generator class="increment"/>
        </id>
        <property name="firstName" column="FIRST_NAME"/>
        <property name="address" column="ADDRESS"/>
    </class>   
</hibernate-mapping>

实体映射到表人:

public class Person implements Serializable{
    private Integer personId;
    private String firstName;
    private String address;

    public Person(){}

    //getters setters
}

最佳答案

此问题是由于在您的 hbm.xml 文件中使用实体名称属性引起的。如果您这样做,那么您还必须在调用保存时提供相同的实体名称:

session.save("person", person);

一个更简洁的选择是从映射文件中删除实体名称属性,这样您就可以调用 save(person) 而不必提供实体名称(它默认为 FQ 类名称)。然后通过传递类而不是字符串名称来创建您的条件。例如:

session.createCriteria(Person.class);

关于java - 创建记录导致 org.hibernate.MappingException : Unknown entity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22205876/

相关文章:

database - 打开/解密 Webex Connect db3 文件

asp.net - 您对依赖于数据库的 ASP.NET 应用程序使用什么缓存策略?

database - 您如何避免在表中添加时间戳字段?

hibernate - 如何从jpa中具有多对多关系的joinable中删除记录

java - 无法让 KafkaProducer/KafkaConsumer 在 Scala 中工作

java - 在 View 中实现观察者 (Java)

java - 使用 Stanford NLP : Filter unrequired words and characters 进行文本标记化

java - java中如何访问json数组元素

Hibernate,由父表中的序列生成的外键的映射

java - @Scheduled @Transactional lazy init 集合错误 - 没有代理