解析persistence.xml时出错(org.hibernate.MappingException)

时间:2011-07-06 09:51:12

标签: jpa persistence.xml

我正在使用JPA,并尝试将配置数据放在 persistence.xml 文件中。 但是当我运行应用程序时,错误如下:

[hibernatetool] org.hibernate.MappingException: invalid configuration
[hibernatetool] org.xml.sax.SAXParseException: Document is invalid: no grammar found.

我用谷歌搜索了它。好像说我错过了 DOCTYPE 部分。喜欢:

<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

所以我尝试添加缺少的DOCTYPE部分。但是新的问题来了。我应该添加什么?

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
    http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
    version="1.0">
    <persistence-unit name="helloworld">
        <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" />
        <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/db" />
        <property name="hibernate.connection.username" value="*****" />
        <property name="hibernate.connection.password" value="*****" />
        <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLInnoDBDialect" />

    </persistence-unit>
</persistence>

PS: 我已经下载了几个jpa示例项目并检查了相关的persistence.xml文件,但发现它们都没有DOCTYPE部分。

DOCTYPE部分是否必要,我不得不问,因为它中没有很多代码样本。

我的问题的解决方案似乎是: 我应该为DOCTYPE部分添加什么。

1 个答案:

答案 0 :(得分:0)

你错过了properties-element,它是persistence-unit的子元素,也是property-elements的父元素。

<persistence-unit name="helloworld">
    <properties>
        <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" />
        <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/db" />
          ...
    </properties>
</persistence-unit>