2016-08-30 6 views
0

ich ein Feld in meinem Tisch habe wie folgt definiert:Get Maximalwert Tabellenfeld von Spring LocalSessionFactoryBean

"SECTION" NUMBER(3,0) 

Das hbm Mapping für dieses Feld ist:

<property name="section" type="integer"> 
    <column name="SECTION" /> 
</property> 

In der Entity-Klasse erkläre ich es wie:

private Integer section; 

In meinem DAO, bevor die Daten einfügen, würde ich mag eine Ausnahme validieren und zu werfen, wenn die Daten, die ich bekommen ist zu groß für das Abschnittsfeld.

Was habe ich mit so weit das LocalSessionFactoryBean, die ich von meinem Anwendungskontext erhalten:

int length = ((Column) localSessionFactoryBean. 
      getConfiguration(). 
      getClassMapping(MyEntity.class.getName()). 
      getProperty("section"). 
      getColumnIterator().next()).getLength(); 

Das Problem ist, dass für jedes Feld als Integer deklariert, die Länge immer 255

ist, wie Ich bekomme die Spaltenlänge in Oracle definiert? (hier: Nummer (3,0))

Antwort

0

Vielleicht, anstatt zu versuchen, auf die Spaltendefinition zuzugreifen, verwenden Sie einfach Hibernate Validator auf Ihrem POJO?

+0

Mit dieser Lösung muss ich max @Size für jede Eigenschaft des pojo, das ich validieren möchte, fest codieren. Das wäre unser letzter Ausweg, wenn wir es nicht dynamisch machen können. – gyc

+0

Ich endete damit, dass es sauber und einfach ist. – gyc

Verwandte Themen