-->
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.  [ 11 posts ] 
Author Message
 Post subject: Entity referenziert ein anderes Entity, pKey jedoch nicht 0
PostPosted: Tue Feb 03, 2009 11:37 am 
Newbie

Joined: Tue Feb 03, 2009 11:24 am
Posts: 5
Hallo,

ich habe das folgende Problem.

In einem Entitiy referenziere ich ein anderes Entity mit der folgenden Annotation:

Code:
public class Kunde implements Serializable {
@Column(name = "FILIALNR", insertable = false, updatable = false)
  private Long filialnr;

@OneToOne
  @JoinColumn(name = "FILIALNR", insertable = false, updatable = false)
  private Filiale filiale;
}



Hier das einfache Entity Filiale

Code:
public class Filiale implements Serializable {
  @Id
  @Column(name = "FILIALNR", insertable = false, updatable = false)
  private Long filialnr;
}


Das Problem ist, dass die Referenz nicht aufgelöst werden kann, denn die filialnr den Wert 0 hat. Denn in der Datenbank gibt es keine Filiale mit der filialnr 0. Wie kann ich an dieser Stelle abfangen, dass das Entitiy FILIALE nicht gesetzt werden braucht, wenn die filialnr 0 ist ?

Grüsse


Top
 Profile  
 
 Post subject:
PostPosted: Tue Feb 03, 2009 11:42 am 
Expert
Expert

Joined: Thu Jan 08, 2009 6:16 am
Posts: 661
Location: Germany
Warum sind alle Spalten nicht insertable und updatable? Das scheint keinen Sinn zu machen, die Id in der Filiale sollte immer Insertable sein und ist standardmäßig nicht updatable. Da brauchst du es also gar nicht. Benutz @GeneratedValue, falls die Ids automatisch gesetzt werden sollen.
Die JoinColumn von deiner OneToOneBeziehung sollte auch beides auf true haben, damit der Wert gesetzt werden kann.

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


Top
 Profile  
 
 Post subject:
PostPosted: Tue Feb 03, 2009 11:48 am 
Newbie

Joined: Tue Feb 03, 2009 11:24 am
Posts: 5
mmerder wrote:
Warum sind alle Spalten nicht insertable und updatable? Das scheint keinen Sinn zu machen, die Id in der Filiale sollte immer Insertable sein und ist standardmäßig nicht updatable. Da brauchst du es also gar nicht.


Es ist so, dass in diese Tabellen nicht geschrieben werden darf, die Daten sind alle schon da. Daher kann es nämlich auch sein, dass einige Kunden zwar eine Filialnr mit 0 haben, aber in der Tabelle FILIALE es keine Filiale mit der id 0 existiert. Darum bekomme ich einen Fehler.


Top
 Profile  
 
 Post subject:
PostPosted: Tue Feb 03, 2009 11:55 am 
Expert
Expert

Joined: Thu Jan 08, 2009 6:16 am
Posts: 661
Location: Germany
Also steht 0 in der Datenbank in Wahrheit für null? Wenn ja, kannst du nicht alle Nullen durch null ersetzen?

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


Top
 Profile  
 
 Post subject:
PostPosted: Tue Feb 03, 2009 11:59 am 
Newbie

Joined: Tue Feb 03, 2009 11:24 am
Posts: 5
Leider nicht, wie gesagt, ich darf die Daten "Fremddatenbank" nicht anpacken.


Top
 Profile  
 
 Post subject:
PostPosted: Tue Feb 03, 2009 12:00 pm 
Expert
Expert

Joined: Thu Jan 08, 2009 6:16 am
Posts: 661
Location: Germany
kannst du einen view darauf definieren?

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


Top
 Profile  
 
 Post subject:
PostPosted: Tue Feb 03, 2009 12:02 pm 
Newbie

Joined: Tue Feb 03, 2009 11:24 am
Posts: 5
Leider nicht. Es muss da irgendwie einen anderen Weg geben. Es müsste doch möglich sein, mitzuteilen, dass wenn die filialnr 0 ist, die Beziehung nicht herzustellen.


Top
 Profile  
 
 Post subject:
PostPosted: Tue Feb 03, 2009 12:16 pm 
Expert
Expert

Joined: Thu Jan 08, 2009 6:16 am
Posts: 661
Location: Germany
versuch mal
Code:
@Formula("case when FILIALNR = 0 then null else FILIALNR")

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


Top
 Profile  
 
 Post subject:
PostPosted: Tue Feb 03, 2009 12:47 pm 
Expert
Expert

Joined: Thu Jan 08, 2009 6:16 am
Posts: 661
Location: Germany
Ok, das wird nicht funktionieren, siehe ANN-210.

Bis das gelöst ist, was wohl noch dauern wird, musst du auf XML-Mapping umsteigen und formula verwenden. Damitsollte es aber gehen. ;-)


Please rate.

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


Top
 Profile  
 
 Post subject:
PostPosted: Tue Feb 03, 2009 2:10 pm 
Newbie

Joined: Tue Feb 03, 2009 11:24 am
Posts: 5
mmerder wrote:
versuch mal
Code:
@Formula("case when FILIALNR = 0 then null else FILIALNR")


Bekomme leider immer noch
javax.persistence.EntityNotFoundException: Unable to find de.group.Filiale with id 0

wenn ich folgendes Versuche


Code:
@OneToOne
  @JoinColumn(name = "FILIALNR", insertable = false, updatable = false)
@Formula("case when FILIALNR = 0 then null else FILIALNR")
  private Filiale filiale;


Top
 Profile  
 
 Post subject:
PostPosted: Tue Feb 03, 2009 3:28 pm 
Expert
Expert

Joined: Thu Jan 08, 2009 6:16 am
Posts: 661
Location: Germany
Wie gesagt, Formula funktioniert noch nicht bei Annotations und ManyToOne. Versuch xml-mapping, wie oben gesagt.

_________________
-----------------
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.  [ 11 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.