Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JPA@ElementCollection不';不创建列_Java_Jpa_Orm - Fatal编程技术网

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提供商?您是否尝试过对其进行升级/降级?