Hibernate Maven MappingException未知实体

时间:2016-04-10 00:01:41

标签: java hibernate maven

我在Maven中使用hibernate时遇到异常。 hibernate版本是5.1.0.Final。 例外是: enter image description here 这是我的项目结构: enter image description here

这是我的实体类ABC:

package com;
import javax.persistence.*;
@Entity

@Table(name = "abc_inf")

public class ABC {

    @Id@GeneratedValue
    private Integer id;

    private String name;

    public ABC() {
    }

    setters and getters omitted 

}

这是我的主要课程:

package com;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
public class Main {
    public static void main(String[] args) {
        Configuration conf = new Configuration().configure();
        ServiceRegistry sr = new             StandardServiceRegistryBuilder().applySettings(conf.getProperties()).build();
        SessionFactory sf = conf.buildSessionFactory(sr);
        Session session = sf.openSession();

        ABC abc = new ABC();
        abc.setName("abc");

        session.save(abc);
        session.flush();
        session.close();
        sf.close();
    }
}

这是我的hibernate.cfg.xml:

<hibernate-configuration>
  <session-factory>
    mysql connection and properties settings omitted
    <mapping class="com.ABC"/>
  </session-factory>
</hibernate-configuration>

3 个答案:

答案 0 :(得分:0)

这是Hibernate 5配置问题。您无法使用此代码来构建会话工厂

Configuration conf = new Configuration().configure();
ServiceRegistry sr = new StandardServiceRegistryBuilder().applySettings(conf.getProperties()).build();
SessionFactory sf = conf.buildSessionFactory(sr);

改为使用

SessionFactory sf = new Configuration().configure().buildSessionFactory();

参考附加说明

Hibernate 5 :- org.hibernate.MappingException: Unknown entity

答案 1 :(得分:0)

您需要将带注释的类添加到hibernate配置中。使用以下代码

AnnotationConfiguration conf = new AnnotationConfiguration();
conf.addAnnotatedClass(ABC.class);
SessionFactry sf = conf.configure(hbmFile).buildSessionFactory();

答案 2 :(得分:0)

就我而言,我使用LocalSessionFactoryBeansetPackagesToScan,为审计实体编写的服务也可以正常工作。

但是!!!

在我们的项目中,表EntityInfo的列为entityname,例如

entytyname = bel.rdigital.cashbox.models.cbmain.merchantcore.versions.CBVersions

,这将持续存在于db中。然后,我重构了实体CBVersions并将其转移到包中

bel.rdigital.cashbox.models.cbmain.versions.cashbox.CBVersions

但是在db中保留了旧包,并且比当我使用方法CrossTypeRevisionChangesReader.findEntitiesGroupByRevisionType(revision)

我收到异常Unknown entity: bel.rdigital.cashbox.models.cbmain.merchantcore.versions.CBVersions

因此,此例表明,休眠状态找不到实体...问题可能出在包裹扫描或位置实体中...