0

DEVICEID という一意の ID を持つテーブル DEVICE があります。主キーがシーケンス DEVICEINFOSEQ である DEVICEINFO という 2 番目のテーブルがありますが、この情報テーブルには DEVICE を指す外部キーである DEVICEID フィールドもあります。DEVICE HBM には、次の deviceinfo があります。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping default-lazy="true"
package="com.xxx.xxx.xxx">
<class name="Device" table="DEVICE" dynamic-update="true">
    <id name="dString" column="DEVICEID" type="java.lang.String"
        unsaved-value="null" length="9">
        <generator class="assigned"/>
    </id>
....
<many-to-one name="deviceInfo" class="DeviceInfo"
        outer-join="true" foreign-key="deviceId"  >
    </many-to-one>

そして、私のデバイス情報hbmは次のとおりです

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping default-lazy="true" package="com.xxx.xxx.xxx">
<class name="DeviceInfo" table="DEVICEINFO" dynamic-update="true">
    <id name="id" column="DID" type="integer">
        <generator class="native">
            <param name="sequence">DEVICEINFOSEQ</param>
        </generator>
    </id>

    <property name="deviceId" column="DEVICEID" type="string"
        length="32">
    </property>
    <property name="somefield" column="SOMEFIELD" type="string" length="30" />
</class>

1 つのデバイスは Deviceinfo テーブルに 1 つのエントリしかありませんが、デバイスにはエントリがまったく必要ありません。すべてのデバイスにデバイス情報があるわけではありません。しかし、情報が存在する場合は、それを取得する必要があります。情報は別のソースから更新されており、この HBM は可能であれば更新を防止する必要があります。多対一は正しいですか?多分私は一対多を使うべきですか?

上記の HBM を使用すると、

org.springframework.dao.InvalidDataAccessResourceUsageException: クエリを実行できませんでした。SQL

4

0 に答える 0