-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 5 posts ] 
Author Message
 Post subject: LazyToOne
PostPosted: Wed Mar 04, 2009 7:58 am 
Regular
Regular

Joined: Tue Jun 03, 2008 1:12 pm
Posts: 84
Location: germany
Leider funktioniert das Lazy Loading mit diesen Einstellungen nicht.

Mein User wird ständig eager gefetched!

Code:
private User user;
@LazyToOne(LazyToOneOption.PROXY)
@Fetch(FetchMode.SELECT)
@OneToOne(fetch = FetchType.LAZY, optional = true, targetEntity=User.class)
@JoinColumns({
@JoinColumn(..,   
@JoinColumn(..})
public User getUser() { return user;}
public void setUser(User user ) { this.user= user;}


hab es mit unterschiedlichen Einstellungen versucht - ohne erfolg.

Wie kann ich ein eine OneToOne lazy fetchen, wenn die Annotationen nicht funktionieren?


Top
 Profile  
 
 Post subject:
PostPosted: Wed Mar 04, 2009 9:10 am 
Expert
Expert

Joined: Thu Jan 08, 2009 6:16 am
Posts: 661
Location: Germany
Was sind denn deine Join-Columns? Normalerweise "funktioniert" Lazy nur nicht bei PrimaryKeyJoinColumns. Wurde schon mal hierund hiererklärt.

_________________
-----------------
Need advanced help? http://www.viada.eu


Top
 Profile  
 
 Post subject:
PostPosted: Wed Mar 04, 2009 9:48 am 
Regular
Regular

Joined: Tue Jun 03, 2008 1:12 pm
Posts: 84
Location: germany
hallo,

danke hab nun das:

Code:
@OneToOne(fetch = FetchType.LAZY, optional = false, targetEntity=Postage.class)


optional = false.

Nun funktioniert das lazyloading, aber leider entspricht das nicht meiner Relation, da ich eine optionale 1:1-Relation habe.

Nun bekomme ich bei diversen selects, welche kein ToOne-Object haben, ne fehlermeldung:

Code:
javax.persistence.EntityNotFoundException: Unable to find entity.User with id entity.Person$PersonID@ca8ada43


klar, weil ich nicht zu jeder Person einen User habe (eben optional=false).

Soll ich dann lieber ne OneToMany nehmen? wäre wohl besser..!?


Top
 Profile  
 
 Post subject:
PostPosted: Wed Mar 04, 2009 9:59 am 
Regular
Regular

Joined: Tue Jun 03, 2008 1:12 pm
Posts: 84
Location: germany
oder soll ich die relation komplett löschen und lieber nur über ne normale hql-abfrage auf das evtl. referenzierende objekt zugreifen?

das wäre wohl die beste lösung!


Top
 Profile  
 
 Post subject:
PostPosted: Wed Mar 04, 2009 11:15 am 
Expert
Expert

Joined: Thu Jan 08, 2009 6:16 am
Posts: 661
Location: Germany
Nein, du kannst auch OneToOne benutzen, aber nicht den PrimaryKey als JoinColumn benutzen, sodass es funktioniert wie bei einem ManyToOne.

_________________
-----------------
Need advanced help? http://www.viada.eu


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 5 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.