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 = ?
和因爲HQL不設置用於DU_Dossier
一個aliase在update DTR.DU_Dossier
段的查詢的,因爲我用id
在select count(*) from dossier_detail udd where udd.dossier_id = id) = 0
段查詢的我得到這個錯誤如下:
Caused by: java.sql.SQLSyntaxErrorException: ORA-00918: column ambiguously defined
我怎樣才能解決這個問題?