当我尝试使用item.persist()
时,它失败了。虽然我看不到最后的sql语句,
它会在绑定参数之前显示调用,并且缺少模式
当我创建实体管理器时,我正在使用属性映射方法。
所以,也许我使用了错误的属性名称,我正在使用Web上的各种示例。
我正在使用EclipseLink并访问Netezza数据库。
创建EntityManager
后,这是getProperties()
的输出:
em属性:
{javax.persistence.jdbc.url=jdbc:netezza://server.com:5480/databaseName, javax.persistence.jdbc.password=xxxx, openjpa.jdbc.Schema=RT, javax.persistence.jdbc.driver=org.netezza.Driver, javax.persistence.jdbc.user=xxxx}
openjpa.jdbc.Schema=RT
在属性中设置为正确的值。
更新: 我的persistence.xml中还有以下值:
<properties>
<property name="openjpa.jdbc.Schema" value="RT" />
<property name="javax.persistence.jdbc.url" value="jdbc:netezza://server.com:5480/database"/>
<property name="javax.persistence.jdbc.user" value="xxxxx"/>
<property name="javax.persistence.jdbc.password" value="xxxx"/>
<property name="javax.persistence.jdbc.driver" value="org.netezza.Driver"/>
</properties>
架构的正确属性是什么?这没有在建议的任何属性中列出。需要找到正确的表格......
答案 0 :(得分:0)
我认为&#34; openjpa.jdbc.Schema&#34;属性不正确,因为它似乎对应于Apache OpenJPA实现的配置
要实现EclipseLink,必须在persistence.xml中定义以下属性
<property name = "eclipselinkj.dbc.driver" value = "org.netezza.driver" />
<property name = "eclipselink.jdbc.url" value = "jdbc: Netezza: //server.com: 5480 / databaseName" />
<property name = "eclipselink.jdbc.password" value = "xxxx" />
<property name = "eclipselink.jdbc.user" value = "user" />
请参阅:Configuring the Persistence Unit
或者如果您想使用标准JPA
<property name = "javax.persistence.jdbc.driver" value = "org.netezza.driver" />
<property name = "javax.persistence.jdbc.url" value = "jdbc: Netezza: //server.com: 5480 / databaseName" />
<property name = "javax.persistence.jdbc.password" value = "xxxx" />
<property name = "javax.persistence.jdbc.user" value = "user" />
答案 1 :(得分:0)
属性openjpa.jdbc.Schema仅适用于OpenJPA实现,绝对不适用于eclipselink。 JPA中用于指定模式的标准方法是使用@Table
注释的模式属性的每个实体。或者,如果需要为所有实体指定它,除了persistence.xml之外,还可以创建一个额外的映射文件,您可以在其中定义XML中的默认模式:
的persistence.xml:
...
<persistence-unit name="MySchemaPU" transaction-type="JTA">
<mapping-file>META-INF/orm.xml</mapping-file>
META-INF文件夹中的新文件orm.xml:
<?xml version="1.0" encoding="UTF-8"?>
<entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm http://java.sun.com/xml/ns/persistence/orm_1_0.xsd"
version="1.0">
<persistence-unit-metadata>
<persistence-unit-defaults>
<schema>RT</schema>
</persistence-unit-defaults>
</persistence-unit-metadata>
</entity-mappings