Nullable Tabellenspalte vom Typ Number sinnvoll im Bean abbilden?

Herr_M

Erfahrenes Mitglied
Hallo zusammen,

Wie eingen von euch schon durch andere Threads die ich zum Thema EJB 3.0 erstellt hab aufgefallen ist, arbeite ich gerade mit einem Kollegen an einer Anwendung die genau diese Technologie einsetzt.

Jetzt habe ich folgendes Problem, in einigen Datenbanktabellen des zugrundeliegenden Datenmodells, gibt es einige Spalten vom Typ Number, die auch den Wert "null" enthalten dürfen, und dies auch teilweise tun.

Damit ist es schon mal unmöglich im Bean für die entsprechenden Spalten einfach ein
float, double, int usw zu verwenden, da primitive Datentypen ja nicht den Wert "null" annehmen können/dürfen.

Wie bilde ich also so eine Konstellation sinnvoll im Bean ab?

Das einzige was mir spontan als Workaround eingefallen ist, ist die betroffenen Spalten nicht als "Zahlen" (also int double oder so) im Bean zu handhaben, sondern als String und den String dann vor der Verwendung in der Anwendung dann in ein int, double usw zu casten.
Aber das erscheint mir doch recht umständlich und nicht wirklich im Sinne des Erfinders / von EJB 3.0.
Das dicke Buch zu EJB 3.0 das ich hier hab bietet dazu leider keine Hilfe, da alle Beispiele usw nicht vorsehen, dass es Number Felder mit nullable gibt.
 
Ich hab selbst eine recht gute Lösung gefunden, nach etwas nachdenken ist mir eingefallen, dass es in java ja auch Klassen gibt, die den primitiven Datentypen entsprechen, gleichzeitig aber alle Vorteile von Objekten haben unter anderem auch das sie den Wert "null" annehmen können.

Ich verwende jetzt in meinen Beans für int, double und Co die Klassen Integer, Double usw.

Hier meine Lösung für das Bean:
Code:
@Column(name="BOACMENG", nullable=true)
  public Integer getBoacMeng() {
    if( this.boacMeng == null) {
      return Integer.valueOf(0);
    } else {
     return this.boacMeng;
    }
  }

  public void setBoacMeng(Integer boacMeng) {
    this.boacMeng = boacMeng;
  }

Die Attribute des Beans lassen sich in der Anwendung dann ja einfach aus dem Bean auslesen und z.B. mit intValue ohne Probleme in ein normales Integer umwandeln, mit dem dann der Rest der Anwendung wie gewohnt arbeiten kann. Gleiches gilt ja auch für allen anderen primitiven Datentypen.
 

Neue Beiträge

Zurück