Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.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
Sql 休眠:使用2个非主键加入_Sql_Hibernate_Join_Key - Fatal编程技术网

Sql 休眠:使用2个非主键加入

Sql 休眠:使用2个非主键加入,sql,hibernate,join,key,Sql,Hibernate,Join,Key,我想从2表做一个左外部联接,但使用的是不是主键的2键。 这是使用的本机sql查询: 也许有更好的办法 SQLQuery query = session.createSQLQuery(" select {A.*},{B.*} from A_TABLE A left outer join B_TABLE B on A.QUOTE_ID = B.QUOTE_NUM ") .addEntity("A", A_Class.class) .addJoin("B", "A.bDocs"); for(Obje

我想从2表做一个左外部联接,但使用的是不是主键的2键。 这是使用的本机sql查询:
也许有更好的办法

SQLQuery query = session.createSQLQuery("
select {A.*},{B.*} from A_TABLE A left outer join B_TABLE B on A.QUOTE_ID = B.QUOTE_NUM ")
.addEntity("A", A_Class.class)
.addJoin("B", "A.bDocs");

for(Object result : query.list()) 
{
....
}
映射文件时,请执行以下操作:

<class name="A_Class" table="A_TABLE" schema="S">
        <id name="rowId" type="string">
            <column name="ROW_ID" length="60" />
            <generator class="assigned" />
        </id>
        <set name="BDocs" inverse="true" fetch="select" lazy="false">
            <key>
                <column name="QUOTE_NUM" length="60" not-null="true" />
            </key>
            <one-to-many class="B_Class" />
        </set>
映射B文件:

<hibernate-mapping>
    <class name="B"  table="B_TABLE" schema="S">
        <id name="rowId" type="string">
            <column name="ROW_ID" length="60" />
            <generator class="assigned" />
        </id>
        <many-to-one name="A" class="A_Class" fetch="select" lazy="false" outer-join="true" foreign-key="QuoteId" property-ref="QuoteId">
            <column name="QUOTE_NUM" length="60" not-null="true" />
        </many-to-one>
从这个查询中,我获得了两个对象,一个是A类型的,另一个是B类型的,有很多正确的数据,但是A类型的对象中的集合BDOC没有填充目标是仅获取A对象,其中变量BDocs填充有B对象。

我不知道问题是在查询中还是在映射文件中。
有人能帮我吗

<hibernate-mapping>
    <class name="B"  table="B_TABLE" schema="S">
        <id name="rowId" type="string">
            <column name="ROW_ID" length="60" />
            <generator class="assigned" />
        </id>
        <many-to-one name="A" class="A_Class" fetch="select" lazy="false" outer-join="true" foreign-key="QuoteId" property-ref="QuoteId">
            <column name="QUOTE_NUM" length="60" not-null="true" />
        </many-to-one>
public class B_Class implements java.io.Serializable
{
    private String rowId;
    private String quoteNum;
    // omitted all the set and get
}