Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java hibernate不设置别名,oracle抛出“ORA-00918:定义不明确的列”错误_Java_Spring_Hibernate_Hibernate Session_Hibernate Filters - Fatal编程技术网

Java hibernate不设置别名,oracle抛出“ORA-00918:定义不明确的列”错误

Java hibernate不设置别名,oracle抛出“ORA-00918:定义不明确的列”错误,java,spring,hibernate,hibernate-session,hibernate-filters,Java,Spring,Hibernate,Hibernate Session,Hibernate Filters,我使用的是hibernate 4.3.11.Final,并且有以下模型和.hbm.xml文件: 域类 public class Dossier { private Long id; private Power power; private String dossierNumber; // getter and stters } 休眠映射文件 <hibernate-mapping> <class name="com.rg

我使用的是hibernate 4.3.11.Final,并且有以下模型和
.hbm.xml
文件:

域类

public class Dossier {
    private Long    id;
    private Power   power;
    private String  dossierNumber;

    // getter and stters
}
休眠映射文件

<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>
这是调用时生成的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没有在
更新DTR.DU_档案
查询段中为
DU_档案设置别名,因为我在
select count(*)中使用了
id
,其中udd.Dossier_id=id)=0
查询段,我得到以下错误:

原因:java.sql.SQLSyntaxErrorException:ORA-00918:column 含糊不清


如何解决此问题?

尝试定义没有别名的筛选器表达式。。直接表格名称:

(exists (select power_authorize.id
              from power_authorize 
              where power_authorize.userid = :userId
                  and power_authorize.id = du_dossier.power_Id)
                  or (select count(*) from dossier_detail 
                        where dossier_detail.dossier_id = du_dossier.id) = 0
        )
)
(exists (select power_authorize.id
              from power_authorize 
              where power_authorize.userid = :userId
                  and power_authorize.id = du_dossier.power_Id)
                  or (select count(*) from dossier_detail 
                        where dossier_detail.dossier_id = du_dossier.id) = 0
        )
)