加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-14 05:03:54 所属栏目:Java 来源:网络整理
导读:我正在使用weblogic和oracle来编程Web应用程序. 数据源通过JNDI配置,数据库用户可以将DML转换成表,但不能使用DDL.您可能会猜到,该用户不是这些表的所有者,但他被授予访问权限. 假设他是GUEST_USER 该应用程序使用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>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读