2

国と州のオブジェクトがあります。私は州から国への一方向の多対一の関係を持つつもりです。以下のようにマッピングを定義した国の状態への参照を保存したくありません。State オブジェクトを 1 つでも削除すると、すべての国が削除されます。

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping
    PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
    <class
        name="places.Country" 
        table="COUNTRY"  
        dynamic-update="true">

        <!-- Technical ID -->
        <id name="name" type="string" unsaved-value="new" column="COUNTRY_NAME">
        </id>

        <!-- Properties -->
        <property name="commonName" 
            column="COMMON_NAME"
        />
        <property name="iso2Code" 
            column="ISO2_CODE"
        />
        <property name="iso3Code" 
            column="ISO3_CODE"
        />
        <property name="isoNumeric" 
            column="ISO_NUMERIC"
        />
        <property name="ituCode" 
            column="ITU_CODE"
        />
        <property name="ianaCode" 
            column="IANA_CODE"
        />
    </class>
    <class
        name="places.State" 
        table="STATE"  
        dynamic-update="true">

        <!-- Technical ID -->
        <id name="name" type="string" unsaved-value="new" column="STATE_NAME">
        </id>

        <!-- Properties -->
        <property name="code" column="STATE_CODE"
        />

    <many-to-one name="country" column="COUNTRY" not-null="true" cascade="none" 
        class="places.Country"
    />        
    </class>

</hibernate-mapping>
4

1 に答える 1

1

提供されたマッピングは問題ないようです。実際にはマッピングを正確に使用して次のコードを実行します。

Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();

State aState = (State) session.load(State.class, stateId);
session.delete(aState);

session.getTransaction().commit();

次の出力が生成されます。

...
ハイバネート: STATE state0_ から、state0_.STATE_NAME を STATE1_1_0_ として、state0_.STATE_CODE を STATE2_1_0_ として、state0_.COUNTRY を COUNTRY1_0_ として選択します。
Hibernate: STATE_NAME=? の STATE から削除します。
3270 [main] INFO org.hibernate.impl.SessionFactoryImpl - 終了

物事は期待どおりに機能しており、私の国はまだそこにあります。

多分いくつかのコードを表示しますか?

于 2010-01-24T06:56:07.210 に答える