我有一個名爲AbstractEntity的類,它用@MappedSuperclass註解。然後我有一個名爲User(@Entity)的類,它擴展了AbstractEntity。這兩個都存在於名爲foo.bar.framework的包中。當我使用這兩個類時,一切正常。但現在我已經將包含這些文件的jar導入到另一個項目中。我想重複使用User類並用一些附加字段進行擴展。我認爲@Entity public class User extends foo.bar.framework.User
可以做到這一點,但我發現這個用戶的實現只繼承了AbstractEntity的字段,但沒有任何來自foo.bar.framework.User。問題是,我如何讓第二個User類繼承第一個User實體類的所有字段?擴展實體
這兩個User類實現都具有使用@Table(name =「name」)定義的不同表名。
我的班這個樣子
package foo.bar.framework;
@MappedSuperclass
abstract public class AbstractEntity {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
protected Long id;
@Column(nullable = false)
@Version
protected Long consistencyVersion;
...
}
package foo.bar.framework;
@Entity
@Table(name = "foouser")
public class User extends AbstractEntity {
protected String username;
protected String password;
....
}
package some.application;
@Entity
@Table(name = "myappuser")
public class User extends foo.bar.framework.User {
protected String firstname;
protected String lastname;
protected String email;
....
}
通過上面的代碼,的EclipseLink將創建一個名爲 「myappuser」 包含字段 「ID」, 「consistencyVersion」 表, 「名字」 ,「姓氏」和「電子郵件」。 「用戶名」和「密碼」字段不會創建到表格 - 這就是我遇到的問題。
你怎麼確認它從abstractuser只繼承領域? – Bozho 2010-03-21 19:58:55
請展示更多代碼並解釋您期望的內容以及您獲得的內容(在Java級別和數據庫級別)。 – 2010-03-21 20:21:51
@Bazho,我將我的代碼與實際的數據庫表進行了比較。 @Pascal Thivent,我已經包含了你所要求的信息。 – 2010-03-22 05:21:45