-->
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.  [ 3 posts ] 
Author Message
 Post subject: Erweiterung einer persist. Klasse mit primitivem Attribut
PostPosted: Fri Apr 21, 2006 11:41 am 
Beginner
Beginner

Joined: Wed Feb 08, 2006 10:09 am
Posts: 28
Hallo,

ich, JDK 1.4.2, Hibernate 3.1.2, erweitere eine persistente Klasse mit einem neuen Attribut von einem primitiven Typ, z.B. int.

public class MyObject
{
[..]
private int newSampleAttribute; // incl Getter und Setter
[..]
}

Ich verwende als access-Modus "field" (als default in die Mapping-Datei geschrieben) und habe meine Klassen daher instrumentiert.

Die Mapping-Datei habe ich auch angepaßt:

[..]
<class name="mypackage.MyObject">
<cache usage="read-write"/>
[..]
<property name="newSampleAttribute" type="int"/>
</class>
[..]

Wenn ich nun das Schema-Tool laufen lasse, wird die neue Spalte auch korrekt mit richtigem Typ angelegt.
Die neuen Felder werden aber alle mit NULL gefüllt.

Das führt dazu, daß ich beim Laden eines Objekts aus der Datenbank eine
java.lang.IllegalArgumentException bekomme, mit folgendem StackTrace:

java.lang.IllegalArgumentException at sun.reflect.UnsafeIntegerFieldAccessorImpl.set(UnsafeIntegerFieldAccessorImpl.java:62)
at java.lang.reflect.Field.set(Field.java:519)
at org.hibernate.property.DirectPropertyAccessor$DirectSetter.set(DirectPropertyAccessor.java:79)
at [..]

Ich habe leider keinen Weg gefunden, auf diese Weise neu erzeugte Felder, mit einem sinnvollem Wert vorzubelegen.

Hat jemand eine Idee?

Ciao
Peter Schütt


Top
 Profile  
 
 Post subject:
PostPosted: Mon Apr 24, 2006 3:08 am 
Beginner
Beginner

Joined: Thu Apr 21, 2005 5:37 am
Posts: 45
Location: Switzerland
Ändere das Mapping:
Code:
<property name="newSampleAttribute" type="int" not-null="true"/>

Evtl. musst du dann das Schema nochmals generieren, damit die not-null-constraint auch in der DB gesetzt wird.

Ich glaube es gibt auch noch einen weg einen default-wert zu setzen. Sowas wie default="0" oder default-value="0". Musst du in der Doku nachschauen.


Top
 Profile  
 
 Post subject:
PostPosted: Mon Apr 24, 2006 3:19 am 
Beginner
Beginner

Joined: Wed Feb 08, 2006 10:09 am
Posts: 28
Hallo,
not-null habe ich schon probiert, daß bringt auch nichts.

Und default oder default-Value gibt es laut mapping-DTD nicht.

Ich werde es jetzt von Hand mittels JDBC machen.

Oder hat jemand noch eine bessere Idee?

Ciao
Peter Schütt


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 3 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.