[hibernate-dev] org.hibernate.PropertyValueException: not-null property references a null or transient value

Emmanuel Bernard emmanuel at hibernate.org
Sat Jan 23 10:57:06 EST 2010


Hi Claude,
Could you create a unit test reproducing the issue, open a JIRA with your patch+unit test and refer it back here, I will apply it.

Emmanuel

PS I don't see the relation between what you are describing and HHH-4344 or even ANN-556

On 22 janv. 2010, at 17:58, Claude Houle wrote:

> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> 
> Hello All,
> 
> I've been tracking an issue that has been causing us some trouble
> regarding annotation-based hibernate mappings. The exception occurs at
> run-time only:
> /org.hibernate.PropertyValueException: not-null property references a
> null or transient value ...
> /
> At first I believed we had an issue with our entity mapping was faulty
> and went to try and figure it out... However, I came accross several
> examples on the wide internet and showed that my mapping seems
> correct. Furthermore, I had some other entities mapped in a similar
> fashion that did not cause any issue... How could that be?
> 
> I traced the Hibernate code to a class named
> org.hibernate.cfg.OneToOneSecondPass (Hibernate Annotations 3.4.0.GA
> for those interested to look at the code) up to line 147:
> 
> 
>    ...
>    Iterator it = otherSide.getJoinIterator();
>    Join otherSideJoin = null;
>    while ( it.hasNext() ) {
>        otherSideJoin = (Join) it.next();   
>        if ( otherSideJoin.containsProperty( otherSideProperty ) ) {
>            break;
>        }
>    }
>    if ( otherSideJoin != null ) {
>        ...
>    }
>    ...
> 
> If you look closely, it seems that if there are JOINs but none
> contains the otherSideProperty, the variable otherSideJoin will not be
> null and will contains the last joins of the iterator even if it is
> not valid.
> 
> The patched-up code would look like:
> 
>    ...
>    Iterator it = otherSide.getJoinIterator();
>    Join otherSideJoin = null;
>    while ( it.hasNext() ) {
>        Join otherSideJoinValue = (Join) it.next();   
>        if ( otherSideJoinValue.containsProperty( otherSideProperty ) ) {
>            otherSideJoin = otherSideJoinValue;
>            break;
>        }
>    }
>    if ( otherSideJoin != null ) {
>        ...
>    }
>    ...
> 
> To fix my issue, I applied this patch:
> Index: src/main/java/org/hibernate/cfg/OneToOneSecondPass.java
> ===================================================================
> - --- src/main/java/org/hibernate/cfg/OneToOneSecondPass.java   
> (revision 18572)
> +++ src/main/java/org/hibernate/cfg/OneToOneSecondPass.java   
> (working copy)
> @@ -146,8 +146,9 @@
>                 Iterator it = otherSide.getJoinIterator();
>                 Join otherSideJoin = null;
>                 while ( it.hasNext() ) {
> - -                    otherSideJoin = (Join) it.next();
> - -                    if ( otherSideJoin.containsProperty(
> otherSideProperty ) ) {
> +                    Join otherSideJoinValue = (Join) it.next();
> +                    if ( otherSideJoinValue.containsProperty(
> otherSideProperty ) ) {
> +                        otherSideJoin = otherSideJoinValue;
>                         break;
>                     }
>                 }
> 
> I compiled the code locally and re-tried my failing code and it worked
> beautifully. it seemed that my last joins in the iterator has a
> nullable = false which caused the runtime
> /org.hibernate.PropertyValueException: not-null property references a
> null or transient value/
> 
> In all honesty, there are plenty of existing bug-reports where this
> particular issue could fit:
> http://opensource.atlassian.com/projects/hibernate/browse/HHH-4344
> http://opensource.atlassian.com/projects/hibernate/browse/ANN-556
> 
> 
> Thanks,
> 
> - -- 
> 
> Claude Houle
> 8D Technologies inc.
> 
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.10 (Darwin)
> Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
> 
> iEYEARECAAYFAktZ2S8ACgkQlk+F7nx+VYtQHQCgp4EH1Ey0h/kbMbeE7hCUJBLG
> broAnAgq3ZuMC79MlN9njfR8x9yK05R1
> =7xV5
> -----END PGP SIGNATURE-----
> 
> _______________________________________________
> hibernate-dev mailing list
> hibernate-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/hibernate-dev





More information about the hibernate-dev mailing list