unsaved-valueに指定した値は、dbにあるモデルオブジェクトを保存する際にHiberbateがInsert文を発行するのかUpdateを発行するのかを判断するために使われます。
例えば、以下のようにunsaved-value="null"という設定があったとします。
xml
1<?xml version="1.0"?>
2<!DOCTYPE hibernate-mapping SYSTEM
3 "http://hibernate.sourceforge.net/
4 hibernate-mapping-3.0.dtd">
5
6<hibernate-mapping package="my.package">
7
8 <class name="Person" table="PERSON">
9
10 <id name="id" column="ID"
11 unsaved-value="null">
12 <generator class="sequence">
13 <param name="sequence">PERSON_SEQ</param>
14 </generator>
15 </id>
16
17 </class>
18
19</hibernate-mapping>
このような場合に、Personオブジェクトを保存しようとしたとしましょう。
Java
1Person person = new Person();
2person.id=null;
3em.persist(person); //emはエンティティーマネージャーのインスタンス
このときidがnullの場合には、HibernateはInsert文を発行し、そうでなければUpdate文を発行します。
ご質問内容にあるようにunsaved-value="ANY"とした場合にはPersonオブジェクトをdbに保存する際にidの値によらず、常にInsert文を発行することをHibernateに指示していることになります。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。