【问题标题】:JPA: How to generate entities from another schema?JPA:如何从另一个模式生成实体?
【发布时间】:2018-12-25 01:03:27
【问题描述】:

我有为用户 A 创建的表的数据库。用户 B 被授予对这些表的 CRUD 访问权限。在 SQL 查询中,用户 B 可以使用完全限定名称 A.TABLE 来引用模式 A 上的表。应用程序将使用用户 B 对这些表进行操作。

但是,当我尝试使用用户 B 连接为应用程序生成 JPA 实体类时,JPA 向导不允许我选择表所在的架构 A .我通过在用户 B 连接的 SQL 查询中使用完全限定的表名 A.FOO 来确保授权是正确的。

我尝试使用如下同义词

create or replace synonym B.FOO FOR A.FOO;

但是 JPA 工具仍然找不到表。我也不想使用用户 A 连接生成表。如何正确生成不同模式的实体?

【问题讨论】:

    标签: java sql eclipse oracle jpa


    【解决方案1】:

    我不知道下面的“技巧”(基本上,巢中的杜鹃)是否有效,但这是我曾经使用过的(不是在 JPA 中,虽然):假设你从头开始(即删除同义词)。然后使用 CTAS 为 A 拥有的表创建一个空 (where 1 = 2) 表(在模式 B 中):

    create table foo as select * from a.foo where 1 = 2;
    

    现在尝试做你正在做的事情 - JPA 向导应该看到现在属于 B 的 FOO 表。一旦你完成了,

    drop table foo;
    create synonym foo for a.foo;
    

    并查看一切是否按预期工作。祝你好运!

    【讨论】:

    • 我不知道该哭还是该笑。必须有另一种方式
    • 嗯,这取决于你有多绝望 :) 先笑,然后哭,然后 - 如果没有其他方法,请应用我写的:)
    猜你喜欢
    • 2011-10-14
    • 2011-03-03
    • 2013-01-31
    • 2017-06-12
    • 1970-01-01
    • 2010-09-22
    • 2011-06-09
    • 2018-06-03
    • 2011-07-16
    相关资源
    最近更新 更多