3

我找不到我的 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>
- <!--  Database connection settings 
  --> 
  <property name="connection.driver_class">org.h2.Driver</property> 
  <property name="connection.url">jdbc:h2://localhost:1527/hibernatedb</property> 
  <property name="connection.username">h2</property> 
  <property name="connection.password" /> 
- <!--  JDBC connection pool (use the built-in) 
  --> 
  <property name="connection.pool_size">1</property> 

- <!--  Disable the second-level cache  
  --> 
  <property name="cache.provider_class">org.hibernate.cache.internal.CollectionCacheInvalidator
  </property> 
- <!--  Echo all executed SQL to stdout 
  --> 
  <property name="show_sql">true</property> 
- <!--  Drop and re-create the database schema on startup 
  --> 
  <property name="hbm2ddl.auto">create</property> 

  - <!--  SQL dialect 
  --> 
  <property name="dialect">org.hibernate.dialect.H2Dialect</property>

- <!--  Names the annotated entity class 
  --> 
  <mapping class="firsthibernateproj.UserDetails" />

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

这是我使用的类:

    public class HibernateTest {
    private static Object configuration;


    public static void main(String[] args) {
        UserDetails user = new UserDetails();
        user.setUserId(1);
        user.setUserName("First User");

        Configuration configuration = new Configuration().configure("hibernate.cfg.xml");
        StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder().
        applySettings(configuration.getProperties());
        SessionFactory factory = configuration.buildSessionFactory(builder.build()); 


        Session session = factory.openSession();
        session.beginTransaction();
        session.save(user);
        session.getTransaction().commit();

    }

}

检查了xml文件,没有语法错误。

有什么想法可以解决这个问题吗?

4

6 回答 6

5

当您不按顺序创建配置文件时会出现此问题,首先列出属性,然后映射,最后缓存。

于 2017-06-23T05:46:54.457 回答
1

您复制到我的项目的文件也报告了相同的错误,但是当-删除每个评论之前的这些字符时,错误就会消失。您是否从某些格式化 xml 的应用程序中复制了内容?例如 Internet Explorer 就是这样做的

编辑:)

尝试这个

<?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>
  <!--  Database connection settings 
  --> 
  <property name="connection.driver_class">org.h2.Driver</property> 
  <property name="connection.url">jdbc:h2://localhost:1527/hibernatedb</property> 
  <property name="connection.username">h2</property> 
  <property name="connection.password" /> 
  <!--  JDBC connection pool (use the built-in) 
  --> 
  <property name="connection.pool_size">1</property> 

  <!--  Disable the second-level cache  
  --> 
  <property name="cache.provider_class">org.hibernate.cache.internal.CollectionCacheInvalidator
  </property> 
  <!--  Echo all executed SQL to stdout 
  --> 
  <property name="show_sql">true</property> 
  <!--  Drop and re-create the database schema on startup 
  --> 
  <property name="hbm2ddl.auto">create</property> 

  <!--  SQL dialect 
  --> 
  <property name="dialect">org.hibernate.dialect.H2Dialect</property>

  <!--  Names the annotated entity class 
  --> 
  <mapping class="firsthibernateproj.UserDetails" />

  </session-factory>
  </hibernate-configuration>
于 2014-12-08T12:43:45.173 回答
1

我已经从同样的问题中通过了。但是我已经通过按顺序排列所有 xml 标记来解决这个问题..

于 2016-03-10T18:58:45.293 回答
0

我有同样的错误。经过大约一个小时的搜索和重新部署。原来,我错误地在配置文件的某处输入了一个“Q”并且看不到它。所以仔细检查你的文件,你一定是拼错了一些东西或输入了一些字符。

于 2017-03-17T09:24:36.843 回答
0

我也曾经遇到过同样的错误。我发现我在 hibernate.cfg.xml 中写了一个描述行并且我没有“注释”下来。

看来你也犯了同样的错误。我在您的 conf 文件中的每条评论之前都看到了一个额外的连字符。

"

- <!--  JDBC connection pool (use the built-in) 
  --> 

"

它应该是 ”

<!--  JDBC connection pool (use the built-in) 
  -->

"

我猜这是唯一的错误

于 2017-10-26T13:37:36.367 回答
0

如果您使用错误的(即与目标文件的编码不匹配)编码从 Internet 复制源代码,则会出现此问题。如果您手动覆盖每个空格、换行符、每个字符 - 一切,您的文件将正常工作。

或者,您也可以将代码粘贴到“愚蠢的”编辑器中,标记所有并再次复制。这也可以解决问题(未经测试)。

于 2016-11-21T00:54:40.113 回答