Hallo,
ich bekomme die Meldung dass ein Wert vor dem Persistiervorgang wohl noch auf null stehe, was aber absolut nicht stimmt, da ich debuggt habe.
Meine Klasse User hält ein Objekt vom Typ "UserProfile" welches als many-to-one gemapped ist. Nachdem ich es per "user.setProfile(theProfile);" gesetzt habe und es dann mittels "persist" in die Datenbank speichern möchte, bekommen ich folgende Exception:
Code:
org.hibernate.PropertyValueException: not-null property references a null or transient value: de.tfhberlin.eclipsophone.common.persistence.User.profile
at org.hibernate.engine.Nullability.checkNullability(Nullability.java:72)
at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:290)
at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:181)
at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:121)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:187)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:172)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:94)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70)
at org.hibernate.impl.SessionImpl.fireSaveOrUpdate(SessionImpl.java:507)
at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:499)
at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:495)
at org.company.persistence.dao.WebClientUserDao.persist(WebClientUserDao.java:71)
So sieht das Mapping von User aus:
Code:
<hibernate-mapping>
<class name="org.company.persistence.User" table="user">
<id name="id" column="id" type="java.lang.Integer">
<generator class="increment" />
</id>
<property name="name" column="name" type="java.lang.String" />
<set name="subscriptions" inverse="true">
<key>
<column name="user_id"></column>
</key>
<one-to-many class="org.company.persistence.UserGroupSubscriptionstatus"/>
</set>
<property name="status" type="org.company.persistence.HibernateUserStateEnum" not-null="true"/>
<property name="activated" type="org.company.persistence.HibernateEntityActivatedEnum" not-null="true"/>
<many-to-one name="profile" class="org.company.persistence.UserProfile" fetch="select">
<column name="profile_id" not-null="true" />
</many-to-one>
</class>
</hibernate-mapping>
Code:
User user = new User();
user.setActivated(ActivatedType.activated);
user.setName(username);
user.setStatus(Userstatus.loggedOut);
UserProfile up = new UserProfile();
up.setPassword(password);
user.setProfile(up);
return userDao.persist(user);
Wo liegt denn hier der Fehler?