Java 在JPA/Spring引导中重用实体

Java 在JPA/Spring引导中重用实体,java,postgresql,jpa,spring-boot,Java,Postgresql,Jpa,Spring Boot,我有一个无法修改的现有实体,如下所示: @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 pub

我有一个无法修改的现有实体,如下所示:

@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 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
ChildEntity: select name,id from table where (/*some condition*/)
ParentEntity: select extra,name,id from table where (/*some condition*/)
但是,当我运行本机查询将数据分配给
ParentEntity
列表时,它无法识别
ChildEntity

我的问题是这样的:

@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
ChildEntity: select name,id from table where (/*some condition*/)
ParentEntity: select extra,name,id from table where (/*some condition*/)
我该怎么做?

如果您阅读

可嵌入类用于表示实体的状态,但 与实体类不同,它们没有自己的持久标识


回顾您的实体,您可能需要
@MappedSuperclass
@heritation
,具体取决于您的模型关联。这个线程清楚地说明了这一点。

尝试添加整个查询创建以及赋值
实体
s不能
可嵌入
,它是或。