Hibernate错误 - org.hibernate.MappingException:未知实体:

时间:2016-08-20 19:53:57

标签: hibernate hibernate-annotations hibernate.cfg.xml

伙计们!我对hibernate 5有一个非常奇怪的问题。 我在线程" main"中收到异常org.hibernate.MappingException:未知实体:com.rosko.Merchandiser 当我删除configuration.addAnnotatedClass(com.rosko.Merchandiser.class)

HibernateUtil.java

public class HibernateUtil {

private static final SessionFactory sessionFactory = buildSessionFactory();

private static SessionFactory buildSessionFactory() {
    try {
        Configuration configuration = new Configuration();
        configuration.configure();
        /* **With this line, everyting is working..** configuration.addAnnotatedClass(com.rosko.Merchandiser.class);*/
        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;
}}

Application.java

公共类申请{

public static void main(String[] args) {


    Session session = HibernateUtil.getSessionFactory().openSession();
    session.beginTransaction();

    Merchandiser merchant = new Merchandiser();

    merchant.setAddress("Viena");
    merchant.setName("sadkada");

    session.save(merchant);     


    session.getTransaction().commit();
    session.close();
}
}

hibernate.cfg.xml中

<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/finance?serverTimezone=UTC</property>
    <property name="connection.username">root</property>
    <property name="connection.password">rozeto90</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.rosko.Merchandiser" />

</session-factory>

Merchandiser.java

  @Entity
@Table(name="merchandiser")
public class Merchandiser {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@Column(name="name")
private String name;

@Column(name= "address")
private String address;

public int getId() {
    return id;
}

public void setId(int id) {
    this.id = id;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public String getAddress() {
    return address;
}

public void setAddress(String address) {
    this.address = address;
}


}

我是否可以仅将xml文件用于映射类?

最好的问候。

1 个答案:

答案 0 :(得分:0)

确保hibernate.cfg.xml的文件名和路径正确。

path = src/main/resources/hibernate.cfg.xml

还尝试在HibernateUtil类下面使用:

import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;

public class HibernateUtil {
    private static final SessionFactory sessionFactory = buildSessionFactory();

    private static SessionFactory buildSessionFactory() {
        Configuration configuration = new Configuration();
        configuration.configure();
        ServiceRegistry serviceRegistry = new ServiceRegistryBuilder()
                .applySettings(configuration.getProperties())
                .buildServiceRegistry();
        return configuration.buildSessionFactory(serviceRegistry);
    }

    public static SessionFactory getSessionFactory() {
        return sessionFactory;
    }

    public static void shutdown() {
        // Close caches and connection pools
        getSessionFactory().close();
    }
}