Java hibernate.cfg.xml文件无法找到映射的类并在线程中引发-Exception;“主要”;org.hibernate.MappingException:未知实体:
我试图查看有关此主题的所有问题,但没有一个对我有帮助,我尝试了所有可能的方法来解决此问题,但无法解决。我想了解我在代码中犯了哪些错误 我的项目结构是Java hibernate.cfg.xml文件无法找到映射的类并在线程中引发-Exception;“主要”;org.hibernate.MappingException:未知实体:,java,hibernate,Java,Hibernate,我试图查看有关此主题的所有问题,但没有一个对我有帮助,我尝试了所有可能的方法来解决此问题,但无法解决。我想了解我在代码中犯了哪些错误 我的项目结构是 hibernateOnline |---------src/main/java |------------com.hibernateOnline.data |---------Hibernate
hibernateOnline
|---------src/main/java
|------------com.hibernateOnline.data
|---------HibernateUtil.java
|------------com.hibernateOnline.data.entities
|------------------User.java
|---------src/main/resources
|------------hibernate.cfg.xml
下面是我的用户类,我在其中使用了所有不特定于hibernate的JPA注释
package com.hibernateOnline.data.entities;
@Entity
@Table(name = "finances_user")
public class User
{
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="USER_ID")
private Long userId;
@Column(name="FIRST_NAME")
private String firstName;
@Column(name="LAST_NAME")
private String lastName;
@Column(name="BIRTH_DATE")
private Date birthDate;
@Column(name="EMAIL_ADDRESS")
private String emailAddress;
@Column(name="LAST_UPDATED_DATE")
private Date lastUpdatedDate;
@Column(name="LAST_UPDATED_BY")
private String lastUpdatedBy;
@Column(name="CREATED_DATE")
private Date createdDate;
@Column(name="CREATED_BY")
private String createdBy;
public Long getUserId() {
return userId;
}
public void setUserId(Long userId) {
this.userId = userId;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public Date getBirthDate() {
return birthDate;
}
public void setBirthDate(Date birthDate) {
this.birthDate = birthDate;
}
public String getEmailAddress() {
return emailAddress;
}
public void setEmailAddress(String emailAddress) {
this.emailAddress = emailAddress;
}
public Date getLastUpdatedDate() {
return lastUpdatedDate;
}
public void setLastUpdatedDate(Date lastUpdatedDate) {
this.lastUpdatedDate = lastUpdatedDate;
}
public Date getCreatedDate() {
return createdDate;
}
public void setCreatedDate(Date createdDate) {
this.createdDate = createdDate;
}
public String getCreatedBy() {
return createdBy;
}
public void setCreatedBy(String createdBy) {
this.createdBy = createdBy;
}
public String getLastUpdatedBy() {
return lastUpdatedBy;
}
public void setLastUpdatedBy(String lastUpdatedBy) {
this.lastUpdatedBy = lastUpdatedBy;
}
}
接下来是HibernateUtils类,我在其中创建sessionFactory
package com.hibernateOnline.data;
public class HibernateUtil
{
private static final SessionFactory sessionFactory = buildSessionFactory();
private static SessionFactory buildSessionFactory() {
try {
Configuration configuration = new Configuration();
configuration.configure();
return configuration
.buildSessionFactory(new StandardServiceRegistryBuilder()
.applySettings(configuration.getProperties())
.build());
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(
"There was an error building the factory");
}
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
}
现在,我使用配置文件“hibernate.cfg.xml”配置MySQL数据库并映射用户类
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- Database connection settings -->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:3306/hibernatedb</property>
<property name="connection.username">****</property>
<property name="connection.password">*****</property>
<!-- SQL dialect -->
<property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
<!-- Echo all executed SQL to stdout -->
<property name="show_sql">true</property>
<mapping class="com.hibernateOnline.data.entities.User"/>
</session-factory>
</hibernate-configuration>
DEBUG - begin
Exception in thread "main" org.hibernate.MappingException: Unknown entity: com.hibernateOnline.data.entities.User
at org.hibernate.internal.SessionFactoryImpl.getEntityPersister(SessionFactoryImpl.java:776)
at org.hibernate.internal.SessionImpl.getEntityPersister(SessionImpl.java:1451)
at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:100)
at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:192)
at org.hibernate.event.internal.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:38)
at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:177)
at org.hibernate.event.internal.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:32)
at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:73)
at org.hibernate.internal.SessionImpl.fireSave(SessionImpl.java:678)
at org.hibernate.internal.SessionImpl.save(SessionImpl.java:670)
at org.hibernate.internal.SessionImpl.save(SessionImpl.java:665)
at com.hibernateOnline.data.Application.main(Application.java:25)
有人能帮我解决这个问题吗?你需要将hbm.xml添加到cfg.xml中你需要将org.hibernate更改为javax.persistence in annotation EntityJPA注释和hibernate配置文件不能一起工作。通过使用JPA annotation@Entity注释类定义的实体将不可用作为实体对hibernate配置文件可见。因此,它无法找到它并给出错误 您需要在JPA或Hibernate之间进行选择。然后-
如@Dhruv rai Puri所述
JPA注释和Hibernate配置文件不能一起工作。。要获得此问题的解决方案,您可以访问。使用Hibernate 5.2.5 Final提供了此问题的完整解决方案感谢Pritam的回复,我已添加到我的cfg.xml文件中,但仍然无法工作…请帮助我解决此问题。。。