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嵌套映射_Java_Jpa_Spring Data Jpa_Spring Data_Hibernate Mapping - Fatal编程技术网

Java 不带基表的视图的JPA嵌套映射

Java 不带基表的视图的JPA嵌套映射,java,jpa,spring-data-jpa,spring-data,hibernate-mapping,Java,Jpa,Spring Data Jpa,Spring Data,Hibernate Mapping,所以我有一个观点叫做OmsJob。我正在将它映射到POJO,它有draftFile,trackedFile,cleanFile,以及与文件表链接的其他文件。和往常一样,我绘制了如下图: @实体 @EntityListeners(PreventAnyUpdate.class) @配置属性(“omsjob”) @表(name=“OMSJob”) 公营职业{ @NotNull @OneToOne(fetch=FetchType.EAGER) @JoinColumn(name=“草稿文件id”) 私有文

所以我有一个观点叫做OmsJob。我正在将它映射到POJO,它有
draftFile
trackedFile
cleanFile
,以及与文件表链接的其他文件。和往常一样,我绘制了如下图:

@实体
@EntityListeners(PreventAnyUpdate.class)
@配置属性(“omsjob”)
@表(name=“OMSJob”)
公营职业{
@NotNull
@OneToOne(fetch=FetchType.EAGER)
@JoinColumn(name=“草稿文件id”)
私有文件draftFile;
}
工作正常,基本上:

{
“作业”:{
“draftFile”:{}
}
}
但我想要的是:

{
“作业”:{
“文件详细信息”:{
“draftFile”:{}
}
}
}
因此,我创建了一个类并将其命名为FileDetails,并将其
@Embedded
@Embedded
如下所示:

@可嵌入
公共类文件详细信息{
@NotNull
@OneToOne(fetch=FetchType.EAGER)
@JoinColumn(name=“draftFileId”)
私有文件draftFile;
}
@实体
@EntityListeners(PreventAnyUpdate.class)
@配置属性(“omsjob”)
@表(name=“OMSJob”)
公营职业{
@嵌入
私人文件详情文件详情;
}
我得到的错误很明显,
是由以下原因引起的:java.sql.SQLException:'MySchema.OMSJob'不是基表
。它试图向表中添加外键,我已将其映射到视图。但是我怎样才能达到我想要达到的目标呢?这是正确的方法吗

更新1
代码正在工作,它只是在启动应用程序时抛出错误。应该找到处理该错误的方法。

只需添加
@javax.persistence.ForeignKey
注释即可防止JPA添加外键:

@可嵌入
公共类文件详细信息{
@NotNull
@OneToOne(fetch=FetchType.EAGER)
@JoinColumn(name=“draftFileId”,foreignKey=@foreignKey(name=“none”))
私有文件draftFile;
/**
*@返回草稿文件
*/
公共文件getDraftFile(){
返回绘图文件;
}
}