jpa在插入时缺少shema

时间:2015-08-21 16:43:02

标签: java jpa

当我尝试使用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>

架构的正确属性是什么?这没有在建议的任何属性中列出。需要找到正确的表格......

2 个答案:

答案 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