[
http://opensource.atlassian.com/projects/hibernate/browse/HHH-2075?page=c...
]
Gail Badner commented on HHH-2075:
----------------------------------
I've reproduced this in master. It seems that properties within a <properties>
tag are not processed correctly.
This test case has:
<properties name="defaultPixelsTag">
<property name="defaultPixels" type="java.lang.Boolean"/>
<many-to-one
name="image"
class="Image"
column="image"
not-null="true"
unique="false"
cascade="lock,merge,persist,replicate,refresh,save-update"
insert="true"
update="true"
</many-to-one>
</properties>
<property name="sizeC" type="java.lang.Integer"
not-null="true" unique="false"
update="true"
/>
Merge is not being cascaded to the many-to-one, and sizeC is erroneously nullified.
many-to-one in a properties element causes strange
PropertyValueException on flush
----------------------------------------------------------------------------------
Key: HHH-2075
URL:
http://opensource.atlassian.com/projects/hibernate/browse/HHH-2075
Project: Hibernate Core
Issue Type: Bug
Components: core
Affects Versions: 3.2.0.cr4
Environment: HSQLDB
Hibernate r10478
Reporter: Josh Moore
Attachments: exception.txt, log.txt, properties.zip
Full test directory zip (org/hibernate/test/properties) attached. But to summarize, the
following test will fail on flush after a simple merge. The exception thrown says that
Pixels.sizeC is null -- though it's clearly set in the test case.
<code>
Image i = new Image();
Pixels p = new Pixels();
p.setSizeC(new Integer(2));
p.setImage(i); // This calls i.getPixels().add(p)
// i.setPixels(null); // This makes it work.
Session s = openSession();
Transaction t = s.beginTransaction();
// s.merge(i); // This makes it work.
p = (Pixels) s.merge(p); // This fails with the exception below.
t.commit();
s.close();
</code>
The properties element in question is:
<code>
<properties name="defaultPixelsTag">
<property name="defaultPixels"
type="java.lang.Boolean"/>
<many-to-one name="image" class="Image"
column="image"
not-null="true" unique="false" insert="true"
update="true"
cascade="lock,merge,persist,replicate,refresh,save-update"
/>
</properties>
</code>
The reverse side is:
<code>
<set
name="pixels"
lazy="true"
inverse="true"
cascade="lock,merge,persist,replicate,refresh,save-update">
<key column="image" not-null="false"/>
<one-to-many class="Pixels"/>
</set>
</code>
--
This message is automatically generated by JIRA.
For more information on JIRA, see:
http://www.atlassian.com/software/jira