Kes*_*uwa 3 java jpa hibernate-mapping spring-data spring-data-jpa
所以我有一个叫做 OmsJob 的视图。我将它映射到一个 POJO 并且它有draftFile,trackedFile,cleanFile,和其他文件与链接的文件表。和往常一样,我映射了这样的:
@Entity
@EntityListeners(PreventAnyUpdate.class)
@ConfigurationProperties("omsjob")
@Table(name = "OMSJob")
public class OmsJob {
@NotNull
@OneToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "draft_file_id")
private SomeFile draftFile;
}
Run Code Online (Sandbox Code Playgroud)
工作正常,基本上是:
{
"omsjob": {
"draftFile": {}
}
}
Run Code Online (Sandbox Code Playgroud)
但我想要它像:
{
"omsjob": {
"fileDetails": {
"draftFile": {}
}
}
}
Run Code Online (Sandbox Code Playgroud)
所以我创建了一个类并将其命名为 FileDetails 并制作它 @Embeddable和@Embedded它变成OmsJob是这样的:
@Embeddable
public class FileDetails {
@NotNull
@OneToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "draftFileId")
private SomeFile draftFile;
}
@Entity
@EntityListeners(PreventAnyUpdate.class)
@ConfigurationProperties("omsjob")
@Table(name = "OMSJob")
public class OmsJob {
@Embedded
private FileDetails fileDetails;
}
Run Code Online (Sandbox Code Playgroud)
我得到的错误很明显,Caused by: java.sql.SQLException: 'MySchema.OMSJob' is not BASE TABLE. 它试图将外键添加到表中,我已将其映射到视图。但是我怎样才能实现我想要的目标,这是否是正确的方法?
代码正在运行,它只是在启动应用程序时抛出错误。应该找到一种方法来处理该错误。
小智 7
只需要添加@javax.persistence.ForeignKey注解防止JPA添加外键即可:
@Embeddable
public class FileDetails {
@NotNull
@OneToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "draftFileId", foreignKey = @ForeignKey(name = "none"))
private SomeFile draftFile;
/**
* @return the draftFile
*/
public SomeFile getDraftFile() {
return draftFile;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
62 次 |
| 最近记录: |