我有一个现有的实体无法修改,如下所示:
@Entity
public class ChildEntity implements Serializable{
private static final long serialVersionUID = 1L;
@Id
@Column(name="id")
private String id;
@Column(name="name")
private String name;
//getters, setters, et al.
我有一个新的查询,它返回与上面相同的数据,并带有一个额外的列,如下所示:
@Entity
public class ParentEntity implements Serializable{
private static final long serialVersionUID = 1L;
@Column(name="extra")
private String extra;
@Id
@Column(name="id")
private String id;
@Column(name="name")
private String name;
//getters, setters, et al. from child
如上所述,我想将上面的类缩减为:
@Entity
public class ParentEntity implements Serializable{
private static final long serialVersionUID = 1L;
@Column(name="extra")
private String extra;
@Embedded
private ChildEntity entity; //ChildEntity will have annotation @Embeddable
//getters, setters, of extra param
但是,当我运行将数据分配到ParentEntity
列表的本机查询时,它无法识别ChildEntity
。
我的疑问是这样的:
ChildEntity: select name,id from table where (/*some condition*/)
ParentEntity: select extra,name,id from table where (/*some condition*/)
我该怎么做?
答案 0 :(得分:0)
如果您阅读37.1.6 Embeddable Classes in Entities
可嵌入类用于表示实体的状态,但是 与实体类不同,它们不具有自己的持久身份。
回顾您的实体,您可能需要@MappedSuperclass
或@Inheritance
,具体取决于您的模型关联。这个帖子explains明确指出了这一点。