Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java org.hibernate.MappingException:未知实体_Java_Hibernate - Fatal编程技术网

Java org.hibernate.MappingException:未知实体

Java org.hibernate.MappingException:未知实体,java,hibernate,Java,Hibernate,这个问题与关于MappingException:Unknown entity的同一主题的其他问题不同,因为我的hibernate配置中有一行: <mapping class="bbb.Students" /> 我手动创建了数据库测试和表Students 错误是: org.hibernate.MappingException: Unknown entity: bbb.Students Exception in thread "main" org.hibernate.Mapping

这个问题与关于MappingException:Unknown entity的同一主题的其他问题不同,因为我的hibernate配置中有一行:

<mapping class="bbb.Students" />
我手动创建了数据库测试和表Students

错误是:

 org.hibernate.MappingException: Unknown entity: bbb.Students

Exception in thread "main" org.hibernate.MappingException: Unknown entity: bbb.Students
    at org.hibernate.internal.SessionFactoryImpl.getEntityPersister(SessionFactoryImpl.java:776)
    at org.hibernate.internal.SessionImpl.getEntityPersister(SessionImpl.java:1533)
    at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:104)
    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:682)
    at org.hibernate.internal.SessionImpl.save(SessionImpl.java:674)
    at org.hibernate.internal.SessionImpl.save(SessionImpl.java:669)
    at bbb.App.main(App.java:39)
主要类别如下:

 package bbb;

 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.Id;
 import javax.persistence.Table;

@Entity
@Table(name = "Students")
public class Students implements java.io.Serializable {

private String id;
private String name;
private String number;


@Id
@Column(name = "ID", unique = true, nullable = false)
public String getId() {
    return id;
}
public void setId(String id) {
    this.id = id;
}

@Column(name = "NAME", nullable = false)
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}

@Column(name = "NUMBER", nullable = false)
public String getNumber() {
    return number;
}
public void setNumber(String number) {
    this.number = number;
}
}
package bbb;



import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;

public class App 
{
public static void main( String[] args )
{

    System.out.println("Hibernate one to one (Annotation)");

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

    Session session = sf.openSession();
    session.beginTransaction();

    Students s = new Students();

    s.setId("1");
    s.setName("Joe");
    s.setNumber("12345");



    session.save(s);
    session.getTransaction().commit();

    System.out.println("Done");
}
}
 <?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>
 <property    name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
 <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test</property>
 <property name="hibernate.connection.username">root</property>
 <property name="hibernate.connection.password">root</property>
 <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
 <property name="show_sql">true</property>
 <mapping class="bbb.Students" />
 </session-factory>
 </hibernate-configuration>
完整的hibernate.config如下所示:

 package bbb;

 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.Id;
 import javax.persistence.Table;

@Entity
@Table(name = "Students")
public class Students implements java.io.Serializable {

private String id;
private String name;
private String number;


@Id
@Column(name = "ID", unique = true, nullable = false)
public String getId() {
    return id;
}
public void setId(String id) {
    this.id = id;
}

@Column(name = "NAME", nullable = false)
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}

@Column(name = "NUMBER", nullable = false)
public String getNumber() {
    return number;
}
public void setNumber(String number) {
    this.number = number;
}
}
package bbb;



import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;

public class App 
{
public static void main( String[] args )
{

    System.out.println("Hibernate one to one (Annotation)");

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

    Session session = sf.openSession();
    session.beginTransaction();

    Students s = new Students();

    s.setId("1");
    s.setName("Joe");
    s.setNumber("12345");



    session.save(s);
    session.getTransaction().commit();

    System.out.println("Done");
}
}
 <?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>
 <property    name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
 <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test</property>
 <property name="hibernate.connection.username">root</property>
 <property name="hibernate.connection.password">root</property>
 <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
 <property name="show_sql">true</property>
 <mapping class="bbb.Students" />
 </session-factory>
 </hibernate-configuration>

com.mysql.jdbc.Driver
jdbc:mysql://localhost:3306/test
根
根
org.hibernate.dialogue.mysqldialogue
真的

刚刚在一个基于Hibernate的项目中导入了学生的类。一切正常。在运行应用程序之前,我手动创建了模式“test”。用main方法发布一个类。可能有什么地方不对劲

更新: 导入了您的主方法。该应用程序仍然有效。无法重现问题

import bbb.Students;
import org.hibernate.*;
import org.hibernate.cfg.Configuration;


public class Main {
    private static final SessionFactory ourSessionFactory;

    static {
        try {
            ourSessionFactory = new Configuration().
                    configure("hibernate.cfg.xml").
                    buildSessionFactory();
        } catch (Throwable ex) {
            throw new ExceptionInInitializerError(ex);
        }
    }

    public static Session getSession() throws HibernateException {
        return ourSessionFactory.openSession();
    }

    public static void main(final String[] args) throws Exception {
        final Session session = getSession();
        try {
           Transaction transaction= session.beginTransaction();
            Students student = new Students();
            student.setName("Vasua");
            student.setNumber("13");
            student.setId("1");
            session.save(student);
            transaction.commit();
                    } finally {
            session.close();
        }
    }
}




<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernte Configuration DTD//EN"
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <property name="connection.url">
        jdbc:mysql://localhost/stack
        </property>
        <property name="connection.driver_class">
            com.mysql.jdbc.Driver
        </property>
        <property name="connection.username">
            root
        </property>
        <property name="connection.password">
            root
        </property>
        <!-- DB schema will be updated if needed -->
        <property name="hbm2ddl.auto">update</property>
        <mapping class="bbb.Students"/>
    </session-factory>
</hibernate-configuration>
导入bbb.学生;
导入org.hibernate.*;
导入org.hibernate.cfg.Configuration;
公共班机{
私有静态最终会话工厂ourSessionFactory;
静止的{
试一试{
ourSessionFactory=新配置()。
配置(“hibernate.cfg.xml”)。
buildSessionFactory();
}捕获(可丢弃的ex){
抛出新异常InInitializeRerror(ex);
}
}
公共静态会话getSession()引发HibernateeException{
返回我们的sessionfactory.openSession();
}
公共静态void main(最终字符串[]args)引发异常{
最终会话=getSession();
试一试{
事务=会话。beginTransaction();
学生=新生();
学生名称(“Vasua”);
学生编号(“13”);
student.setId(“1”);
保存(学生);
commit();
}最后{
session.close();
}
}
}
jdbc:mysql://localhost/stack
com.mysql.jdbc.Driver
根
根
更新

刚刚发布了我的主要课程。