Java Hibernate Maven映射异常未知实体

Java Hibernate Maven映射异常未知实体,java,hibernate,maven,Java,Hibernate,Maven,我在Maven中使用hibernate时遇到了一个异常。hibernate版本是5.1.0.Final。 例外情况是: 以下是我的项目结构: 这是我的实体类ABC: package com; import javax.persistence.*; @Entity @Table(name = "abc_inf") public class ABC { @Id@GeneratedValue private Integer id; private String nam

我在Maven中使用hibernate时遇到了一个异常。hibernate版本是5.1.0.Final。 例外情况是: 以下是我的项目结构:

这是我的实体类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>

省略mysql连接和属性设置

如果使用Hibernate版本4,则问题得到解决

这是一个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配置中。使用以下代码

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

至于我的案例,我正在使用
LocalSessionFactoryBean
setPackagesToScan
,为审计实体编写的服务工作得很好

但是

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

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

这种情况在db中持续存在。然后我重构实体
CBVersions
,并将其传输到包中

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

但在db中仍然是旧的包,而且,当我使用方法
CrossTypeRevisionChangesReader.FindentialsGroupByRevisionType(revision)

我得到异常
未知实体:bel.rdigital.cashbox.models.cbmain.merchantcore.versions.CBVersions


所以,这个假设意味着,Hibernate找不到实体。。。问题可能在包扫描或位置实体中…

在运行主程序之前,请确认您正在调用hibernate.cfg.xml来配置您的实体。它使用hibernate.cfg.xml,否则会引发一些连接异常,因为它首先无法连接到数据库。我还打印了配置中的属性,它与hibernate.cfg.xml中定义的属性相同使用
AnnotationConfiguration
仅对hibernate 3有效。此代码将用于
配置
,但需要添加每个持久类。您不应使用问题作为答案。我的答案中的问题在哪里???我只是简单地解释我们的情况,以及我如何解决这个问题!!!好吧,让它成为一个答案。顺便说一句,原始问题中没有任何与Spring相关的内容。