【问题标题】:Wrong Oracle SQL script generation from EJB QL从 EJB QL 生成错误的 Oracle SQL 脚本
【发布时间】:2013-08-21 11:44:26
【问题描述】:

我有这个问题

SELECT acc.Id 
  FROM Auth as auth, AccId as acc 
 WHERE acc.ownId.Id = auth.Id 
   AND acc.disabled = 0

似乎已正确生成:

org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLSyntaxErrorException: ORA-00904: "T1"."A_ID"."T1"."A_ID": invalid identifier

显然acc.ownId.Id 没有正确生成。

怎么会这样?

【问题讨论】:

  • 您的错误信息与 SQL 不匹配。您的示例 SQL 中没有 T1.A_ID
  • a_horse_with_no_name - 这不是 SQL - 这是 ejb ql。
  • 甲骨文版本?正在运行的应用服务器和版本?请
  • 甲骨文 11g。应用服务器 GlassFish 3.2.2
  • 我会说这是某个地方的映射失败,因为您的错误给出了该输出。是否可以再次检查您的映射?

标签: java oracle netbeans-7 ejbql


【解决方案1】:

请显示您的表格定义,这样会更容易。 提供您的表信息,我们可以查看 create table 子句。

acc.ownId.Id 是错误的列标识符,如果你不在它周围加上“”!

检查正确的列。

也许

acc.ownId?或acc."ownId.Id"

如果您的列名创建为:

Create table AccId (
...
"ownId.Id" int,
...
);

可以,但我不推荐这种命名方式。

当然,如果您在查询中使用它,则需要用“”包装它。

WHERE acc."ownId.Id" = auth.Id

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-17
    • 1970-01-01
    • 1970-01-01
    • 2014-07-02
    相关资源
    最近更新 更多