2012-08-17 71 views
-2

是否有可能宣佈一種JPA - 擴展Java字符串,日期

@????? // Embeddable? 
class MyDate extends java.util.Date implements Serializable{ 

    //.. lots of logic, but no new fields 

} 

,包括它在映射

class Person { 

    @???? 
    MyDate birthdate; 

} 

我試圖嵌入/ Embedded的,但我得到這個錯誤信息

[junit] 7109 venses WARN [main] openjpa.MetaData - "birhtdate" declares a null indicator column ""birthdate_null"" whose JDBC type is not compatible with the expected type "integer". 
+0

我不認爲你的問題的答案將解決你的問題。 – Bohemian 2012-08-17 13:11:58

+1

我真的不明白這個問題。什麼「@ ????」意思? – 2012-08-17 13:16:24

+1

看起來像一個半指定的佔位符給我的註釋。 – duffymo 2012-08-17 13:23:41

回答

0

Stringfinal; Date不是。你不能延伸前者;你可以擴展後者,但我不會推薦這樣做。

繼承表明您的新類具有與其父類不同的行爲。我真誠懷疑你在MyDate有意義的區別。我敢打賭,「很多邏輯」被誤導了。例如,如果您認爲您的新班級將在java.util.Date中深入瞭解的問題上得到改進,我建議您嘗試使用JODA。使用圖書館;不要重塑。我確信你的「大量邏輯」對於你如何代表Date或將其存儲在SQL數據庫中將沒有任何影響。

你應該重新考慮你原來的意圖。

0

是的,它可以定義類型指明MyDate如下:

public class MyDate extends java.util.Date { 
} 

而且使用它作爲實體持久屬性:

@Entity 
public class SomeEntity { 
    @Id private int id; 

    MyDate date 
} 

這工作,因爲它是序列化的類型,因此它在默認情況下被認爲是簡單的類型並堅持數據庫。不需要額外的註釋。但是你不能對String做同樣的事情,因爲你不能擴展最終的類。