【问题标题】:java hibernate database connectionjava休眠数据库连接
【发布时间】:2015-03-04 16:28:40
【问题描述】:

我是 Hibernate 的新手。我正在尝试使用 Hibernate 制作一个简单的数据库驱动应用程序。但我被困住了。我什至不能运行一个简单的数据库查询。我收到此错误:

hibernate.cfg.xml:

<?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-configuration>
  <session-factory>
    <property name="hibernate.dialect">org.hibernate.dialect.DerbyDialect</property>
    <property name="hibernate.connection.driver_class">org.apache.derby.jdbc.ClientDriver</property>
    <property name="hibernate.connection.url">jdbc:derby://localhost:1527/dbtest </property>
    <property name="hibernate.connection.username">root</property>
    <property name="connection.password">pass</property>
    <property name="hibernate.connection.autocommit">false</property>
     <property name="current_session_context_class">thread</property>
    <property name = "show_sql">true</property>
    <property name = "format_sql">true</property>
    <property name = "hibernate.transaction.factory_class">org.hibernate.testing.cache.CachingRegionFactory     
</property>
    <property name = "hibernate.hbm2ddl.auto">create</property>
    <mapping resource="com/enroll/hibernate.hbm.xml"></mapping>
    <mapping class = "com/enroll/insert"></mapping>    
  </session-factory>
</hibernate-configuration>

hibernate.hbm.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
  <class catalog="user" name="com.enroll.UserDetail" table="users"/>
  <id column="id" name="id" type="java.lang.Integer">
    <generator class="assigned"/>
  </id>
  <property column="uname" name="uname" type="string"/>
   <property column="pword" name="pword" type="string"/>   
</hibernate-mapping>

UserDetail.java:

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.enroll;

import javax.persistence.Entity;
import javax.persistence.Id;

@Entity
public class UserDetail {
   @Id private int id;
    String uname;
    String pword;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUname() {
        return uname;
    }

    public void setUname(String uname) {
        this.uname = uname;
    }

    public String getPword() {
        return pword;
    }

    public void setPword(String pword) {
        this.pword = pword;
    }
}

插入.java:

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package com.enroll;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

public class insert {
    public static void main(String[] args){
       UserDetail user1 = new UserDetail();
       user1.setId(7);
       user1.setUname("shri");
       user1.setPword("password");


       SessionFactory sf = (SessionFactory) new Configuration().configure("hibernate.cfg.xml").buildSessionFactory();
       Session session = sf.openSession();
       session.beginTransaction();
       session.save(user1);
       session.getTransaction().commit();       
    }
}  

Can any one please tell me where I am wrong and what I should do? 

  [1]: http://i.stack.imgur.com/YbJxA.png

【问题讨论】:

  • 截图?真的吗? :)

标签: java database hibernate javadb nhibernate-configuration


【解决方案1】:
Your hibernate.hbm.xml should be

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <hibernate-mapping>
      <class catalog="user" name="com.enroll.UserDetail" table="users">
      <id column="id" name="id" type="java.lang.Integer">
        <generator class="assigned"/>
      </id>
      <property column="uname" name="uname" type="string"/>
       <property column="pword" name="pword" type="string"/>
</class>
    </hibernate-mapping>

【讨论】:

  • @TINH CAO 谢谢。我按照你说的尝试过,但我仍然无法通过..:我得到了以下日志文​​件;有什么建议么??????? at com.enroll.insert.main(insert.java:34) 原因:org.dom4j.DocumentException:文档第 1 行出错:不允许匹配“[xX][mM][lL]”的处理指令目标.嵌套异常:不允许匹配“[xX][mM][lL]”的处理指令目标。在 org.dom4j.io.SAXReader.read(SAXReader.java:482) 在 org.hibernate.internal.util.xml.MappingReader.legacyReadMappingDocument(MappingReader.java:325) ... 还有 11 个 Java 结果:1
  • 请检查hibernate.hbm.xml,第一个有空格吗?
  • 嗨@TINH CAO 我已经检查过没有空格:(
  • 我认为您的错误如下bennadel.com/blog/…
  • 嗨谢谢我现在尝试了我面临另一个问题我试图查找但找不到解决方案你想看看请关注,谢谢drive.google.com/file/d/0BxEeexgXf53PN2ZzQXJWeWJRLWM/…
【解决方案2】:

您需要将实体属性包含在映射配置文件中的类标记定义中

<class catalog="user" name="com.enroll.UserDetail" table="users">
     <id column="id" name="id" type="java.lang.Integer">
        <generator class="assigned"/>
     </id>
    <property column="uname" name="uname" type="string"/>
    <property column="pword" name="pword" type="string"/>
</class>

【讨论】:

    【解决方案3】:

    您的休眠配置文件在这一行有误:。请删除它,原因:

    1. 它不是带注释的持久单元
    2. com/enroll/insert 如果权限必须是 com.enroll.insert java类也应该以大写开头。你可以查看this post 来快速启动休眠

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-05
      • 2016-02-02
      • 2021-06-27
      • 2019-02-26
      相关资源
      最近更新 更多