我正在使用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部分添加什么。
答案 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>