gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-30 23:09:16 27 4
gpt4 key购买 nike

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

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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com