当前位置: 首页 > 知识库问答 >
问题:

IllegalArgumentException:Hibernate xml配置中的未知实体

胡桐
2023-03-14

我正在测试Hibernate@任何映射。但我面临一个问题:IllegalArgumentException:未知实体 我正在maven项目中使用基于hibernate XML的配置。

我已经检查了这个问题:未知实体,还有这个未知实体2

但我认为它们不是我要找的东西。

CFG文件

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD//EN"
    "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
  <session-factory>
    <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="hibernate.connection.url">
    jdbc:mysql://localhost:3306/concretepage</property>
    <property name="hibernate.connection.username">root</property>
    <property name="hibernate.connection.password">2993JGda</property>
    <property name="hibernate.connection.pool_size">10</property>
    <property name="show_sql">true</property>
    <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
    <property name="hibernate.hbm2ddl.auto">create</property>

    <mapping class="com.concretepage.entity.Boy"/>
    <mapping class="com.concretepage.entity.Girl"/>
    <mapping class="com.concretepage.entity.StudentInfo"/>
    <mapping class="com.concretepage.entity.College"/>
    <mapping package="com.concretepage.entity"/>
   </session-factory>
</hibernate-configuration>

实体类

大学生

package com.concretepage.entity;

public interface Student {
    String getName();
    int getAge();
}

男孩

@Entity
@Table(name="boy")
public class Boy implements Student {
    @Id
    private int id;
    @Column(name="name")
    private String name;
    @Column(name="age")
    private int age;
//getter-Setter

HibernateUtil公司

package com.concretepage;
import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
public class HibernateUtil {
     private static SessionFactory sessionFactory ;
     static {
           Configuration configuration = new Configuration().configure();
           StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder().
                applySettings(configuration.getProperties());
           sessionFactory = configuration.buildSessionFactory(builder.build());
    }
    public static SessionFactory getSessionFactory() {
        return sessionFactory;
    }
    public static void closeSessionFactory() {
        sessionFactory.close();
    }
}

主类/执行类

public class HibernateManyToAnyDemo {
    public static void main(String[] args) {
        Session session = HibernateUtil.getSessionFactory().openSession();
        session.beginTransaction();
        Boy boy = new Boy();
        boy.setId(1);
        boy.setName("Mukesh");
        boy.setAge(30);
        session.persist(boy);
        //other codes...

现在,当我运行程序时,我面对的是:

Exception in thread "main" java.lang.IllegalArgumentException: Unknown entity: com.concretepage.entity.Boy
    at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:713)
    at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:696)
    at com.concretepage.HibernateManyToAnyDemo.main(HibernateManyToAnyDemo.java:21)

我不明白为什么会这样。另一件事是,在配置中,我给出了hibernate DDL更新。所以应该在数据库中创建该表。但并没有在那个里创建表。

到目前为止,我根据它们看到了两个问题:必须使用Package-scan,但我认为在我的示例中不需要,我正在将它们映射到cfg文件中,并且我还使用了@Entity注释正确。

如有任何帮助,请留言。


共有1个答案

毛正浩
2023-03-14

您可以调试到new Configuration(). confiure()confiure方法中,看看发生了什么。Hibernate试图在类路径上找到一个文件hibernate.cfg.xml,所以如果您没有看到DDL导出发生,该文件很可能没有找到。如果您正在使用Maven构建您的项目,请确保该文件直接包含在src/main/Resources中,否则将不会被拾取。

 类似资料:
  • VSCode中新的内置javascript调试扩展没有命中节点v8的断点。*为了我。断点保持未绑定状态。以前一切都正常,我想使用旧的节点调试扩展。我看到有人建议只设置,但VSC 1.60.0表示这是一个未知的配置设置。 如何恢复到旧的节点/javascript调试器?

  • 问题内容: 在以下代码示例中: 我收到类似“未知提供者$ cookieStore”的angularjs错误。 “ myApp”具有Dependenciy和“ ngCookies”,并且对angular-cookies.min.js进行了评分,那么该代码有什么问题? 那是我在.config中执行此操作的事实吗? 问题答案: 因为只能在配置时传递提供程序,所以我最终没有通过请求转换器而是通过将服务创建

  • 在Spring Hibernate XML配置中,我有 我知道SpringJava配置的等价物如下:LocalSessionFactoryBuilder(dataSource())。AddAnnotatedClass(Foo.class)。buildSessionFactory(); 我的问题是,如果我不使用LocalSessionFactoryBuilder类,而是使用HibernateJpaV

  • 问题内容: 在eclipse中,我使用抛出异常的方法时,通常会抱怨它是否未被try / catch包围,或者是否未再次抛出异常。但是对于某些例外情况(例如Integer.parseInt(string)),Eclipse不会抱怨。 我该如何设置Eclipse来抱怨所有未处理的异常? 谢谢! 问题答案: 简单的答案是,你做不到。 更长的答案是: 检查与未检查异常是Java语言的基本组成部分。 给出有

  • 我试图在Gitlab上运行一个简单的python项目。我在一个EC2实例上设置了一个runner,并试图将其用于该项目。这是最重要的。gitlab ci。yml文件: 我得到这个错误- 当我在.gitlab-ci.yml文件中使用作业和环境时,也会出现同样的错误。运行程序处于活动状态。如何解决此问题?

  • 问题内容: 我正在尝试入门Hibernate 2nd Edition,而我一直试图将简单的工作示例与HSQLDB结合在一起。 当我跑步时,我得到 这是我得到的: Message.java PopulateMessages.java build.properties hibernate.cfg.xml build.xml 问题答案: 您的实体注释不正确, 必须 使用注释。您可以使用Hibernate