【发布时间】:2011-01-14 01:50:53
【问题描述】:
我在架构 ADRESY 中有表 MV_ULICE。但是在 JPA 中,我使用与 ADRESY 不同的用户连接到数据库(Oracle)。此用户有权从模式 ADRESY 访问表,因此在 JPA 中定义实体没有问题,因为您可以轻松地在实体定义中提供不同的模式:
@Entity
@Table(name = "MV_ULICE", schema = "ADRESY")
public class PoiStreet {
...
当我想使用 JPA 创建本机查询时,问题就开始了。查询如下所示:
final String queryString = "SELECT * "
+ "FROM MV_ULICE streets "
+ "WHERE CONNECT_BY_ISLEAF = 1 AND streets.status != 'H' "
+ "CONNECT BY NOCYCLE PRIOR streets.sym_ul = streets.symulold "
+ "START WITH streets.sym_ul = 'ulica'";
Query query = getEntityManager().createNativeQuery(
queryString, poi.domain.entities.streets.PoiStreet.class);
这不起作用。我只是从 Oracle 中得到异常“表或视图不存在”。
我尝试将 MV_ULICE 更改为 ADRESY.MV_ULICE
final String queryString = "SELECT * "
+ "FROM ADRESY.MV_ULICE streets " + ...
但这并没有帮助。
那么,有没有人在使用不同模式的 oracle 上进行本机查询,然后是访问数据库的用户?请帮忙:)
【问题讨论】:
-
你能把跨模式逻辑抽象到一个视图中,这样你就只是从“你的”模式访问一个视图吗?
-
您使用哪种实现方式?
-
rok:我使用 Hibernate 作为 JPA 提供程序。 davek:我告诉你的那些表实际上已经是视图