代码之家  ›  专栏  ›  技术社区  ›  Tuomas Toivonen

JPA:如何从另一个模式生成实体?

  •  0
  • Tuomas Toivonen  · 技术社区  · 6 年前

    我有一个为用户创建表的数据库 . 用户 授予CRUD访问这些表的权限。在SQL查询中,用户 一个 A、 桌子 . 应用程序将使用用户 在那些桌子上做手术。

    但是,当我尝试使用用户为应用程序生成JPA实体类时 连接,JPA向导不允许我选择模式 ,表所在的位置。我使用了一个完全限定的表名来确保授权是正确的 A、 福 连接。

    enter image description here

    我试着用下列同义词

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

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

    1 回复  |  直到 6 年前
        1
  •  1
  •   Littlefoot    6 年前

    我不知道下面的“诀窍”(基本上,是鸟巢里的布谷鸟)是否有效,但这是我曾经使用过的(虽然不是JPA):假设你从头开始(即去掉那个同义词)。然后创建一个空的( where 1 = 2 )表(在模式B中),用于A拥有的表,使用CTA:

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

    现在试着做你正在做的事-JPA向导 应该

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

    看看一切是否如预期。祝你好运!