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 Entity

JPA注释和hibernate配置文件不能一起工作。通过使用JPA annotation@Entity注释类定义的实体将不可用作为实体对hibernate配置文件可见。因此,它无法找到它并给出错误

您需要在JPA或Hibernate之间进行选择。然后-

  • 如果选择使用JPA,则需要创建一个persistence.xml文件。查看所有设置的链接。在JPA设置中,您需要提供可以使用Hibernate提供程序的ORM适配器/提供程序。但请记住,所有注释/设置/配置都需要符合JPA标准

  • 否则,如果您想使用Hibernate,则同样按照Hibernate进行注释/设置/配置


  • 如@Dhruv rai Puri所述


    JPA注释和Hibernate配置文件不能一起工作。。要获得此问题的解决方案,您可以访问。使用Hibernate 5.2.5 Final提供了此问题的完整解决方案

    感谢Pritam的回复,我已添加到我的cfg.xml文件中,但仍然无法工作…请帮助我解决此问题。。。