Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.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.InvalidMappingException:无法从资源userdata.hbm.xml解析映射文档_Java_Mysql_Xml_Hibernate - Fatal编程技术网

Java “线程中的异常”;“主要”;org.hibernate.InvalidMappingException:无法从资源userdata.hbm.xml解析映射文档

Java “线程中的异常”;“主要”;org.hibernate.InvalidMappingException:无法从资源userdata.hbm.xml解析映射文档,java,mysql,xml,hibernate,Java,Mysql,Xml,Hibernate,这是我的目录结构: 以下是错误: 我正在尝试我的第一个hibernate程序,我得到了这个错误。我的程序只是在数据库中输入用户名、密码和电子邮件。我创建了一个POJO user.java、一个UserManager.java和两个xml文件,一个用于配置,另一个用于hibernate映射。我已经尝试了这么长时间的错误,仍然没有解决办法 这是我的user.java: package com.csc.training.Twitter; public class User {

这是我的目录结构:

以下是错误:

我正在尝试我的第一个hibernate程序,我得到了这个错误。我的程序只是在数据库中输入用户名、密码和电子邮件。我创建了一个POJO user.java、一个UserManager.java和两个xml文件,一个用于配置,另一个用于hibernate映射。我已经尝试了这么长时间的错误,仍然没有解决办法

这是我的user.java:

    package com.csc.training.Twitter;

    public class User {

        String username;
        String password;
        String email;
        int user_id;
        Date joined;

public Date getJoined() {
        return joined;
    }
    public void setJoined(Date joined) {
        this.joined = joined;
    }

        public int getUser_id() {
            return user_id;
        }
        public void setUser_id(int user_id) {
            this.user_id = user_id;
        }


        public String getUsername() {
            return username;
        }
        public void setUsername(String username) {
            this.username = username;
        }
        public String getPassword() {
            return password;
        }
        public void setPassword(String password) {
            this.password = password;
        }
        public String getEmail() {
            return email;
        }
        public void setEmail(String email) {
            this.email = email;
        }   
    }
UserManager.java

package com.csc.training.Twitter;

import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.classic.Session;

public class UserManager {

    public void registration() {

    Configuration config=new Configuration();
    config.configure("hibernate.cfg.xml");
    SessionFactory factory=config.buildSessionFactory();

    Session session=factory.openSession();

    Transaction transaction = (Transaction) session.beginTransaction();

    User user = new User(); 

    user.setUsername("fname2");
    user.setPassword("lname2");
    user.setEmail("def@def.def");

    session.persist(user);

    transaction.commit();

    System.out.println("User Id : " + user.getUser_id());

    session.close();
    System.out.println("Employee update successful...");

}

public static void main(String[] args) {
    UserManager um=new UserManager();
    um.registration();
}
}
这些是xml文件

userdata.hbm.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE hibernate-mapping PUBLIC 
 "-//Hibernate/Hibernate Mapping DTD//EN"
 "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

    <hibernate-mapping>
       <class name="com.csc.training.user" table="userdata">
          <id name="user_id">
             <generator class="increment"></generator>
          </id>


          <property name="username" column="username" type="string"/>
          <property name="password" column="password" type="string"/>
          <property name="email" column="email" type="string"/>
          <property name="joined" type="timestamp" column="joined"/>

       </class>
    </hibernate-mapping>

hibernate.cfg.xml:

    <?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.dialect">
          org.hibernate.dialect.MySQLDialect
       </property>
       <property name="hibernate.connection.driver_class">
          com.mysql.jdbc.Driver
       </property>

       <!-- Assume test is the database name -->
       <property name="hibernate.connection.url">
        jdbc:mysql://localhost/twitter
        </property>
        <property name="hibernate.connection.username">
            root
       </property>
       <property name="hibernate.connection.password">
          root
       </property>

       <!-- List of XML mapping files -->
       <mapping resource="userdata.hbm.xml"/>

    </session-factory>
    </hibernate-configuration>

org.hibernate.dialogue.mysqldialogue
com.mysql.jdbc.Driver
jdbc:mysql://localhost/twitter
根
根
我的数据库是twitter,表名是userdata。userdata包含用户id(int、主键、自动递增)、已加入(时间戳)、用户名、电子邮件、密码。 谁能告诉我错误是什么吗?多谢各位

使用下面的代码

将属性joined作为日期类型,并使用以下标记配置HBM文件

<property name="joined" type="timestamp" column="joinedDate_time"/>

将HBM文件的文档类型更改为beloe

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
 "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">  

并与

 <?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

hibernate配置文件中的DTD声明不正确

user.hbm.xml
文件中,它应该是:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC 
 "-//Hibernate/Hibernate Mapping DTD//EN"
 "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<?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">

执行这些更改后,请确保在运行
UserManager
程序时,这些更改位于类路径中。

已添加的POJO类中不存在联接列。尝试使用“已连接字符串”。还有“加入日期”。无更改。同样的错误。你把你的HBM文件放在哪里我直接把这两个dtd文件放在我的项目中。所以这不应该有任何区别。但我还是改变了它,它的输出是一样的。你有没有把类名作为user或者user在HBM中检查过一次file@user3387006,编辑您的问题并添加显示项目文件夹结构的屏幕截图,同时显示classes目录下的文件。贴出你所遇到的问题的完整异常跟踪。另外,hbm.xml映射显示的是
user
,但java类名是
user
,请检查。添加了目录结构并显示错误。请查收。我还将hbm.xml映射更改为user,但仍然存在相同的错误。它无法访问hbm.xml。@user3387006,现在错误显示读取hibernate.cfg.xml文件时连接超时,因为它找不到DTD文件。请添加一个屏幕截图,显示您放置在类路径中的jar文件。通常DTD应该是hibernate jar文件的一部分,因此hibernate会检查jar文件中是否有DTD,如果没有DTD,则会尝试连接到Internet以读取DTD文件。@user3387006,也请将异常的完整堆栈跟踪作为文本添加到您的问题中,而不是屏幕截图。@user3387006,很高兴看到问题已得到解决,您能告诉我们您是如何解决连接超时问题的吗?