2
私は4.3.11.Finalを休止状態使用していますが、このモデルと.hbm.xml
ファイルがあります。Hibernateは別名とOracleスロー `ORA-00918設定されていません:曖昧列defined`エラー
ドメインクラス
をpublic class Dossier {
private Long id;
private Power power;
private String dossierNumber;
// getter and stters
}
のHibernateのマッピング
<hibernate-mapping>
<class name="com.rgh.Dossier" table="DU_Dossier" schema="DTR">
<id name="id" type="long" >
<column name="id" />
<generator class="sequence" >
<param name="sequence">DTR.SEQ_Dossier</param>
</generator>
</id>
<many-to-one name="power" column="power_Id" entity-name="com.rgh.Power" not-null="true" />
<property name="dossierNumber" column="dossier_Number" type="string" not-null="true" />
<filter name="powerAuthorize" condition=" (exists (select t.id
from power_authorize t
where t.userid = :userId
and t.id = power_Id)
or (select count(*) from dossier_detail udd where udd.dossier_id = id) = 0
)"/>
</class>
</hibernate-mapping>
ファイルと、このメソッド番目です
@Autowired
private SessionFactory sessionFactory;
public Session getSession() {
try {
return sessionFactory.getCurrentSession();
}
catch (Exception e) {
return sessionFactory.openSession();
}
}
@Override
public boolean changeStatus(Long dossierId, DossierStatus newStatus) {
String hql = " update " + Dossier.class.getName() + " e " +
" set e.status = :newStatus " +
" where e.id = :dossierId ";
Session session = getSession();
Filter filter = session.enableFilter("powerAuthorize");
filter.setParameter("userId", SecurityUtility.getAuthenticatedUser().getId());
Query query = session.createQuery(hql);
query.setParameter("newStatus", newStatus);
query.setParameter("dossierId", dossierId);
return query.executeUpdate() > 0;
}
この生成されたSQLクエリ場合呼び出し方法:
update DTR.DU_Dossier
set status = ?
where (exists
(select t.id
from power_authorize t
where t.userid = ?
and t.id = power_Id) and
or (select count(*) from dossier_detail udd where udd.dossier_id = id) = 0)
and ID = ?
iが使用のでHQLは、クエリのupdate DTR.DU_Dossier
セグメントにDU_Dossier
ためaliaseを設定しないので、私は、リポジトリに呼び出しでクエリのselect count(*) from dossier_detail udd where udd.dossier_id = id) = 0
セグメントにおけるid
iは、エラーの下にこれを取得する:
Caused by: java.sql.SQLSyntaxErrorException: ORA-00918: column ambiguously defined
どのように私はこの問題を解決することができますか?