Vikash Tiwari
Vikash Tiwari

Reputation: 113

Hibernate @OneToOne Mapping

I have following piece of code..

  1. working fine (staffTbl is not getting fetch lazily) @OneToOne(fetch=FetchType.LAZY) @JoinColumns({@javax.persistence.JoinColumn(name="inst_id", referencedColumnName="inst_id", insertable=false, updatable=false), @javax.persistence.JoinColumn(name="staff_id", referencedColumnName="staff_id", insertable=false, updatable=false)}) private StaffTbl staffTbl;

  2. but when I made this transient its always fetching null: @OneToOne(fetch=FetchType.LAZY) @JoinColumns({@javax.persistence.JoinColumn(name="inst_id", referencedColumnName="inst_id", insertable=false, updatable=false), @javax.persistence.JoinColumn(name="staff_id", referencedColumnName="staff_id", insertable=false, updatable=false)}) private transient StaffTbl staffTbl;

Is there any mistake?

(I'm using Hibernate 3, with JBoss 6.1)

Upvotes: 0

Views: 161

Answers (2)

Predrag Maric
Predrag Maric

Reputation: 24423

transient as a java keyword means that this field should be ignored when the object is serialized, so you probably are seeing effects of this. The question is what are you trying to achieve?

If you meant to mark staffTbl as transient in the context of Hibernate, you should have annotated it with @Transient, but you will have to set its value then, since it won't come from the database and you can expect more nulls.

Upvotes: 0

Abhishek Nayak
Abhishek Nayak

Reputation: 3748

Is there any mistake?

if a field has marked as transient, it means they are not part of the persistent state of the entity.

Solution:

change to:

private StaffTbl staffTbl;

Upvotes: 1

Related Questions