我有一个名为abstractEntity的类,它用@mappedSuperClass注释。然后我有一个名为user(@entity)的类,它扩展了abstractentity。这两者都存在于名为foo.bar.framework的包中。当我用这两门课的时候,一切都很好。但现在我已经将包含这些文件的JAR导入到另一个项目中。我想重用这个用户类,并用一些额外的字段扩展它。我想
@Entity public class User extends foo.bar.framework.User
会这样做,但我发现用户的这个实现只继承AbstractEntity中的字段,而不继承foo.bar.framework.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”、“firstname”、“lastname”和“email”。字段“username”和“password”不是为表创建的,这就是我遇到的问题。