我有一个数据库,其中包含为用户 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 连接生成表。如何从不同的架构正确生成实体?
答案 0 :(得分:1)
我不知道以下“技巧”(基本上是杜鹃)是否有效,但这就是我曾经使用过的(不过在JPA中不是):假设您从头开始(即删除)该同义词)。然后使用CTAS为A拥有的表创建一个空(where 1 = 2
)表(在模式B中):
create table foo as select * from a.foo where 1 = 2;
现在尝试做您正在做的事情-JPA向导应该看到FOO表,因为它现在属于B。一旦完成,
drop table foo;
create synonym foo for a.foo;
,然后查看是否一切正常。祝你好运!