Java JPA@ElementCollection不';不创建列
在我的应用程序中,我有一个Java JPA@ElementCollection不';不创建列,java,jpa,orm,Java,Jpa,Orm,在我的应用程序中,我有一个@实体,它嵌入了一个请求类,该类包含一个问题属性和一个附件的列表。 附件也是一个问题 一个问题有code属性,带有编号和年份,因此我有: @Embeddable public class Code{ private Long number; private Integer year; } @Embeddable public class Issue{ private Code code; } @Embeddable public clas
@实体
,它嵌入了一个请求
类,该类包含一个问题
属性和一个附件的列表。
附件
也是一个问题
一个问题
有code
属性,带有编号
和年份
,因此我有:
@Embeddable
public class Code{
private Long number;
private Integer year;
}
@Embeddable
public class Issue{
private Code code;
}
@Embeddable
public class Attachment extends Issue{
@ManyToOne
private Category category;
}
@Embeddable
public class Request{
@AttributeOverrides(value={
@AttributeOverride(name="code.year", column=@Column(name="issue_year")),
@AttributeOverride(name="code.number", column=@Column(name="issue_number")),
})
private Issue issue;
@AttributeOverrides(value={
@AttributeOverride(name="code.year", column=@Column(name="attachment_year")),
@AttributeOverride(name="code.number", column=@Column(name="attachment_number")),
})
@ElementCollection
@CollectionTable(name="attachments")
private List<Attachment> attachments;
}
@可嵌入
公共类代码{
私人长号码;
私人整数年;
}
@可嵌入
公共类问题{
私人密码;
}
@可嵌入
公共类附件扩展问题{
@许多酮
私人类别;
}
@可嵌入
公共类请求{
@属性溢出(值={
@AttributeOverride(name=“code.year”,column=@column(name=“发行年份”),
@AttributeOverride(name=“code.number”,column=@column(name=“发行号”),
})
私人发行;
@属性溢出(值={
@AttributeOverride(name=“code.year”,column=@column(name=“attachment_year”),
@AttributeOverride(name=“code.number”,column=@column(name=“附件编号”),
})
@元素集合
@CollectionTable(name=“附件”)
私人名单附件;
}
现在的问题是,在生成的表中,我有附件
表,但没有附件(年份
和附件)编号
列
我做错了什么?我认为您应该将问题和附件设计为实体。在某个时候,您的应用程序可能需要引用、创建、删除、显示、修改问题和附件。能够通过ID唯一地引用它们并通过查询检索它们是必要的。不,它们是值对象(作为DDD概念),它们对生态系统中的其他应用程序有意义,但对我来说,它们只是值,我不关心它们的标识表的其他列是否正确生成?您使用什么JPA提供商?您是否尝试过对其进行升级/降级?