【问题标题】:eclipselink oracle identifier is too long ORA-00972eclipselink oracle 标识符太长 ORA-00972
【发布时间】:2014-06-06 02:35:14
【问题描述】:

JPA (EclipseLink) 和 Oracle 数据库出现了奇怪的问题。

预计以下 JPQL:

SELECT w 
  FROM WfmStatusGroup w 
       LEFT JOIN w.statuses ws 
       LEFT JOIN ws.wfmTransList1 wt 
 WHERE wt.wfmWorkflowId = :wfmWorkflowId

但我收到以下错误:

ORA-00972: 标识符太长

在输出中也生成了以下查询。

SELECT t1.WFM_STATUS_GROUP_ID, t1.SYSTEM_ID, t1.WFM_STATUS_GROUP_DESC, 
       t1.WFM_STATUS_GROUP_NAME 
  FROM VERITECH_DEMO.WFM_STATUS_GROUP t1 
     LEFT OUTER JOIN (WFM_STATUS_GROUP_WFM_STATUS t3 
                JOIN VERITECH_DEMO.WFM_STATUS t0 
                   ON (t0.WFM_STATUS_ID = t3.statuses_WFM_STATUS_ID)) 
            ON (t3.WfmStatusGroup_WFM_STATUS_GROUP_ID = t1.WFM_STATUS_GROUP_ID) 
     LEFT OUTER JOIN (WFM_STATUS_WFM_TRANSITION t4 
                JOIN VERITECH_DEMO.WFM_TRANSITION t2 
                  ON (t2.WFM_TRANSITION_ID = t4.wfmTransList1_WFM_TRANSITION_ID)) 
            ON (t4.WfmStatus_WFM_STATUS_ID = t0.WFM_STATUS_ID) 
 WHERE (t2.WFM_WORKFLOW_ID = ?)

有什么建议吗?

【问题讨论】:

    标签: oracle jpa jpql


    【解决方案1】:

    此错误表明您有一个大于 oracle 可以处理的字段名称或对象名称,例如此 wfmTransList1_WFM_TRANSITION_ID 有 31 个字符,而 oracle 只接受 30 个字符作为字段名称。

    请在此处查看此答案:Change table/column/index names size in oracle 11g or 12c

    【讨论】:

    • 关于这个答案,不可能改变字符大小,对吧?
    • 是的,你不能在 oracle 上这样做
    • wfmTransList1_WFM_TRANSITION_ID 从 JPA 自动生成的那个。我不需要最短的实体名称。有什么办法吗?
    • 我认为你可以为你的实体使用别名
    • 你能提供一些例子吗?我是 JPA 的新手。谢谢
    猜你喜欢
    • 2011-02-16
    • 2012-07-09
    • 2012-12-22
    • 1970-01-01
    • 2020-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-03
    相关资源
    最近更新 更多