HQL в предложении для сопоставления компонентов - PullRequest
0 голосов
/ 14 ноября 2011

Я выполняю простой запрос на выбор HQL

from CertObjRel where certificatePrimary in (:certificatePrimaryList)  
where certificatePrimaryList is a java arrayList of certificatePrimary

CertificatePrimary класс:

class CertificatePrimary implements Serializable{

    //private int primaryId;
    private String certificateId;
    private Short trsSequenceNbr;

    public String getCertificateId() {
        return certificateId;
    }

    public Short getTrsSequenceNbr() {
        return trsSequenceNbr;
    }

    public void setCertificateId(String certificateId) {
        this.certificateId = certificateId;
    }

    public void setTrsSequenceNbr(Short trsSequenceNbr) {
        this.trsSequenceNbr = trsSequenceNbr;
    }

}

CertObjRelMapping содержит CertificatePrimary в качестве компонента

CertObjRel.hbm.xml

<component name="certificatePrimary" class="com.csc.exceed.certificate.domain.CertificatePrimary">
    <property name="certificateId" type="java.lang.String" column="CERT_ID" length="36" not-null="true"/> 
    <property name="trsSequenceNbr" type="java.lang.Short" column="CERT_TRS_SEQ_NBR" />
</component>

Я получаю следующую ошибку

DB2 SQL Error: SQLCODE=-104, SQLSTATE=42601, SQLERRMC=(;RT_TRS_SEQ_NBR) in (;<values>, DRIVER=3.50.152

Эта ошибка генерируется после связывания параметра.

1 Ответ

0 голосов
/ 14 ноября 2011

Насколько я знаю HQL in clouse не поддерживает bean-компоненты. Итак, измените ваш запрос, как показано ниже, чтобы использовать certificateId внутри CertificatePrimary, который является строкой.

from CertObjRel where certificatePrimary.certificateId in (:certificatePrimaryIdList)

certificatePrimaryIdList должен быть string , который представляет собой список идентификаторов, разделенных запятой, итерированных certificatePrimaryList, например 'A','B','C'.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...