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

标签 java sql eclipse oracle jpa

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

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

enter image description here

我尝试使用同义词如下

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

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

最佳答案

我不知道以下“技巧”(基本上是巢中的布谷鸟)是否有效,但这就是我曾经使用过的方法(尽管不是在 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;

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

关于java - JPA:如何从另一个模式生成实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51379490/

相关文章:

java - 在鼠标单击事件处理程序中重新使用 getX() getY()

java - 查询包含 java.sql.Date 列的表时,Jpa findAll() 会导致错误

Java 正则表达式和 .matches()

sql - SUM 函数对每个总和带有 WHERE 子句?

java - 在java中以矩阵形式操作彩色图像

java - 我可以在 server.xml 的哪个位置添加 -Djavax.net.debug=all 是在 debugArgs 的 jvmEntries 中吗?

mysql - 如何从键值对表中选择数据

php - 在 postgreSQL 中运行查询时出现 SQL 错误 42601

eclipse - Nodeclipse Debugger 在第一行停止,即使在清除所有断点之后也是如此

java - 是否可以在 Eclipse 中设置项目范围的 VM 参数