java – JPA – EclipseLink – 如何更改默认模式

前端之家收集整理的这篇文章主要介绍了java – JPA – EclipseLink – 如何更改默认模式前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用weblogic和oracle来编程Web应用程序.
数据源通过JNDI配置,数据库用户可以将DML转换成表,但不能使用DDL.您可能会猜到,该用户不是这些表的所有者,但他被授予访问权限.

假设他是GUEST_USER

该应用程序使用JPA EclipseLink,并且已经定义了很多实体.我不想在每个实体类中写入属性来改变模式.
我已经尝试了一个SessionCustomizer,使用这个代码.

public class MyCustomizer implements SessionCustomizer{

    @Override
    public void customize(Session session) throws Exception {

    session.executeNonSelectingsql("ALTER SESSION SET CURRENT_SCHEMA = OWNERS_SCHEMA");
    }
}

似乎有一些未初始化的东西,我得到一个空指针异常,我甚至不确定这是在连接使用前更改模式的方式.
任何样品或想法?

在此先感谢您的帮助!

解决方法

如果所有实体使用相同的模式,您可以使用xml映射文件来定义默认模式.

这样的东西应该可以工作(例如,对于JPA 2.0,将schemaLocation更改为1.0)

orm.xml中:

<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 orm_2_0.xsd"
    version="2.0">
    <persistence-unit-Metadata>
        <persistence-unit-defaults>
            <schema>OWNERS_SCHEMA</schema>
        </persistence-unit-defaults>
    </persistence-unit-Metadata>   
    . . .
</entity-mappings>

persistence.xml中:

<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_2_0.xsd"
    version="2.0" >
    <persistence-unit name="foo">
        . . .
        <mapping-file>orm.xml</mapping-file>
        . . .
    </persistence-unit>
</persistence>

猜你在找的Java相关文章