JPA - 我的命名查询不起作用
JPA - My Named Query won't work
我第一次进入 JPA 时遇到了一些问题。这是我想作为 @NamedQuery 放入的查询,并且此 SQL 有效。
select t1.*, t2.SHORT_NAME from ePluribusWS.GRAPH_ACL t1 join DB_AUTH.USERS t2 on t1.USER_ID = t2.ID where GRAPH_ID = 31611 ;
我不确定这是否在 JPA 中受支持,因为我正在跨不同数据库但在同一服务器中执行 JOIN。 SQL 工作正常。
当我尝试将其作为命名查询(下面的第三个)添加时,我收到一条错误消息(语法错误解析)"A path expression cannot end with a comma",唯一的 Google'ing 向我显示了 JPA 源代码生成了错误消息。
@Entity
@Table(name = "GRAPH_ACL", catalog = "ePluribusWS", schema = "")
@XmlRootElement
@NamedQueries({
.
.
@NamedQuery(name = "EPluribusACLEntryRecord.findByUserId", query = "SELECT g FROM ACLEntryRecord g WHERE g.userId = :userId"),
@NamedQuery(name = "EPluribusACLEntryRecord.findByGraphId", query = "SELECT t1.*, t2.SHORT_NAME FROM ACLEntryRecord t1 JOIN DB_AUTH.USERS t2 ON t1.USER_ID = t2.ID WHERE t1.GRAPH_ID = :graphId"),
@NamedQuery(name = "EPluribusACLEntryRecord.findByCreated", query = "SELECT g FROM ACLEntryRecord g WHERE g.created = :created"),
我有点困惑,因为看起来 JPA 注释要求它们以逗号结尾。
感谢您花时间阅读我的问题,并提供任何见解。通常,编辑会删除此 "thanks" 部分,我认为这是一种令人不快的编辑。
NamedQuery 是 JPQL,而不是 SQL。没有“*”并且 "DB_AUTH.USERS" 是 JPQL 中的无效构造...必须引用与候选实体相关的实体(该实体定义其架构所在的位置)。
如果您想引用未映射到实体的表,则必须使用 SQL 查询 (NamedNativeQuery)
我第一次进入 JPA 时遇到了一些问题。这是我想作为 @NamedQuery 放入的查询,并且此 SQL 有效。
select t1.*, t2.SHORT_NAME from ePluribusWS.GRAPH_ACL t1 join DB_AUTH.USERS t2 on t1.USER_ID = t2.ID where GRAPH_ID = 31611 ;
我不确定这是否在 JPA 中受支持,因为我正在跨不同数据库但在同一服务器中执行 JOIN。 SQL 工作正常。
当我尝试将其作为命名查询(下面的第三个)添加时,我收到一条错误消息(语法错误解析)"A path expression cannot end with a comma",唯一的 Google'ing 向我显示了 JPA 源代码生成了错误消息。
@Entity
@Table(name = "GRAPH_ACL", catalog = "ePluribusWS", schema = "")
@XmlRootElement
@NamedQueries({
.
.
@NamedQuery(name = "EPluribusACLEntryRecord.findByUserId", query = "SELECT g FROM ACLEntryRecord g WHERE g.userId = :userId"),
@NamedQuery(name = "EPluribusACLEntryRecord.findByGraphId", query = "SELECT t1.*, t2.SHORT_NAME FROM ACLEntryRecord t1 JOIN DB_AUTH.USERS t2 ON t1.USER_ID = t2.ID WHERE t1.GRAPH_ID = :graphId"),
@NamedQuery(name = "EPluribusACLEntryRecord.findByCreated", query = "SELECT g FROM ACLEntryRecord g WHERE g.created = :created"),
我有点困惑,因为看起来 JPA 注释要求它们以逗号结尾。
感谢您花时间阅读我的问题,并提供任何见解。通常,编辑会删除此 "thanks" 部分,我认为这是一种令人不快的编辑。
NamedQuery 是 JPQL,而不是 SQL。没有“*”并且 "DB_AUTH.USERS" 是 JPQL 中的无效构造...必须引用与候选实体相关的实体(该实体定义其架构所在的位置)。
如果您想引用未映射到实体的表,则必须使用 SQL 查询 (NamedNativeQuery)