3

当我从 sqldeveloper 运行 SQL 查询时,它运行良好当我从 Hibernate SQL 会话运行相同的查询时,它给了我:“ORA-00918: column ambiguously defined”错误。
死掉休眠生成任何可以用来调试错误的sql日志?

编辑:这里是 sql :(从 sqldeveloper 工作正常)

    SELECT main_contact.cont_name,
  sub_contact.cont_name,
  main_contact.cont_role_desc,
  main_contact.cont_start_dte,
  main_contact.cont_end_dte,
  main_contact.cont_id,
  sub_contact.cont_id,
  main_contact.lookup_desc,
  main_contact.cont_role_desc 
FROM 
  (SELECT cont_rlat.cont_rlat_id ,
    cont_role.cont_role_desc ,
    cont.cont_name ,
    cont.cont_ty_cde ,
    cont.cont_sid ,
    cont.cont_id ,
    cont_rlat.rlat_from_dte ,
    cont.cont_start_dte ,
    cont.cont_end_dte ,
    cont_rlat.app_id ,
    lookup_data_mgmt.lookup_desc
  FROM cont_rlat join
    cont on cont_rlat.cont_sid      = cont.cont_sid
     join cont_role on cont_rlat.cont_role_id=cont_role.cont_role_id
   join  app on cont_rlat.app_id     = app.app_ID
     join LOOKUP_DATA_MGMT on app.app_TY_CDE    = LOOKUP_DATA_MGMT.LOOKUP_ID
   where 
 app.app_id        =:investmentProfileCId
  ) main_contact left join 
  (SELECT cont.cont_id,
    cont.cont_name,
    cont_sub_rlat.cont_rlat_id
  FROM cont_sub_rlat join 
    cont on   
   cont_sub_rlat.individual_cont_id = cont.cont_sid
  ) sub_contact on 

 main_contact.cont_rlat_id = sub_contact.cont_rlat_id
4

2 回答 2

2

您选择了 main_contact.cont_role_desc 两次。此外,您有两列名为“cont_name”和两列名为“cont_id”,这也可能不会让人高兴。如果删除额外的 cont_name 不起作用,也许尝试给它们起别名?

SELECT main_contact.cont_name,
  sub_contact.cont_name AS sub_cont_name,
  main_contact.cont_role_desc,
  main_contact.cont_start_dte,
  main_contact.cont_end_dte,
  main_contact.cont_id,
  sub_contact.cont_id AS sub_cont_id,
  main_contact.lookup_desc

这些在 SQLDeveloper 中都不是问题,但我想至少在结果集中有两个精确的 main_contact.cont_role_desc 副本会让 Hibernate 感到困惑——它将如何区分它们?

于 2011-01-27T16:55:44.740 回答
0

在 hibernate.cfg.xml 中使其记录 sql 语句

<property name="hibernate.show_sql">true</property>
于 2011-01-27T00:37:49.013 回答