java - JPA:关系的目标有可能是非实体吗?

标签 java spring jpa spring-data-jpa jpa-2.0

以下代码采用 Kotlin 语言。

我有一个 TestExecutionSummary 实体

@Entity
class TestExecutionSummary : Serializable {
    @EmbeddedId
    lateinit var id: TestExecutionId
    ...
    @OneToMany(cascade = [CascadeType.ALL], mappedBy = "testExecutionSummary")
    var failures: List<TestFailure> = mutableListOf()     
}
@Embeddable
data class TestExecutionId(
        var stepExecutionId: Long,
        var jobExecutionId: Long
) : Serializable

和一个 TestFailure 实体

@Entity
class TestFailure : Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    var id: Long? = null
    @Column(length = 999)
    lateinit var testId: String
    @JoinColumns(
            JoinColumn(name = "stepExecutionId", referencedColumnName = "stepExecutionId"),
            JoinColumn(name = "jobExecutionId", referencedColumnName = "jobExecutionId")
    )
    @ManyToOne
    lateinit var testExecutionSummary: TestExecutionSummary
    @Column(length = 999)
    var message: String? = null
}

这工作得很好,但让我烦恼的是 TestFailure 没有独立存在,并且在我看来并不真正有资格作为一个实体。是否可以在不使 TestFailure 成为实体的情况下维持显示的关系?

最佳答案

JPA 2.0 有 ElementCollection这正是我正在寻找的。

@ElementCollection(fetch = FetchType.EAGER)
@CollectionTable(
        name = "TEST_FAILURE",
        joinColumns = [
            JoinColumn(name = "stepExecutionId", referencedColumnName = "stepExecutionId"),
            JoinColumn(name = "jobExecutionId", referencedColumnName = "jobExecutionId")
        ]
)
var failures: List<TestFailure> = mutableListOf()

@Embeddable
class TestFailure : Serializable {
    @Column(length = 999)
    lateinit var testId: String
    @Column(length = 999)
    var message: String? = null
}

关于java - JPA:关系的目标有可能是非实体吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49481383/

相关文章:

java - 多对多关联。数据不删除

java - 这个异常例子是不是错了?

java - 如何使 Spring Shell 命令失败?

java - Jersey 中的 Curl token 请求等效项

java - Spring 中 @Secured 与 @RolesAllowed 的区别?以及基于角色的安全性的概念?

java - Spring RestTemplate 动态 JSON 属性名称

java - 使用 EJB 3.0 删除数据库行

java - jpa中如何处理乐观锁异常

java - 如何将 ImageIcon 设置为 JLabel 数组?

java - 在 Swing 中的两个组件之间拖动