2015-01-21 73 views
0

我有一個@Entity類,其中有這樣一個實例如何獲得的BigDecimal類型數據的精度在@Entity類

@Column(name="some_column_in_table", precision=3, scale=1) 
    private BigDecimal someColumnInTable; 

我怎樣才能獲得該實例的精度?

+0

你能解釋一下你到底想要什麼? 註解狀態,DB中列的精度是多少。你想要BigDecimal精度的實例嗎? – maslan 2015-01-21 09:59:52

+0

是的annotatio說它的精度是3,但我怎樣才能檢查這與代碼? – Varun 2015-01-21 10:09:40

+0

你可以在我的答案下面找到它 - 使用反射 – maslan 2015-01-21 10:10:27

回答

1

http://docs.oracle.com/javaee/5/api/javax/persistence/Column.html 如果您只是想以編程方式獲取註釋中設置的值,您可以這樣做。列的保留設置爲RUNTIME,因此使用反射是可能的。

Field f = MyClass.class.getDeclaredField("someColumnInTable")) { 
Column column = f.getAnnotation(Column.class); 
if (column != null){ 
    System.out.println(column.precision()); 
} 

下面是其他一些例子如何做到這一點: Is it possible to read the value of a annotation in java?

+0

MyClass.class.getFields()返回空字段列表。 – Varun 2015-01-21 10:23:50

+0

當我使用'MyClass.class.getField(「someColumnInTable」);'它拋出NoSuchFieldException。 – Varun 2015-01-21 10:27:28

+1

@Varun抱歉,它是私人的,請使用getDeclaredField(編輯) – maslan 2015-01-21 11:08:45

1

我不太清楚,如果我正確地得到了你的問題,但你嘗試過

someColumnInTable.precision() 

通過的BigDecimal的Javadoc告訴?

+0

是的,我嘗試過。該返回值的精度存儲在BigDecimal的實例中。這不起作用。 – Varun 2015-01-21 10:10:43

+0

使用Reflection,如我的答案和完成 – maslan 2015-01-21 10:18:22