我有一个名为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