gpt4 book ai didi

java - JPA - 我的命名查询不起作用

转载 作者:行者123 更新时间:2023-11-29 06:31:15 25 4
gpt4 key购买 nike

我遇到了一些问题,这是我第一次进入 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 运行良好。

当我尝试将其添加为命名查询(下面的第三个)时,我收到一条错误消息(语法错误解析)“路径表达式不能以逗号结尾”,这是唯一的 Google 显示给我的生成错误消息的 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 注释要求它们以逗号结尾。

感谢您花时间阅读我的问题,并提供任何见解。通常,编辑会删除这个“感谢”部分,我认为这是一种令人不快的编辑。

最佳答案

NamedQuery 是 JPQL,而不是 SQL。没有“*”并且“DB_AUTH.USERS”在 JPQL 中是无效的构造......必须引用与候选实体相关的实体(实体定义其模式所在的位置)。

如果您想引用未映射到实体的表,则必须使用 SQL 查询 (NamedNativeQuery)

关于java - JPA - 我的命名查询不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27789752/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com