PersistenceException-与同一实体有多个@OneToMany关系时,抛出org.hibernate.exception.ConstraintViolationException

时间:2019-09-25 10:11:59

标签: java hibernate jpa corda

在我的应用程序中,当我在一个类中包含2个或更多相同实体(@OneToMany关系)的列表时,我得到org.hibernate.exception.ConstraintViolationException。

    @Embeddable
    data class DocPresentation(

            @OneToMany(cascade = [CascadeType.ALL])
            var billOfLadingComments: List<Comment>?,


            @OneToMany(cascade = [CascadeType.ALL])
            var invoiceComments: List<Comment>?,

            ...

    @Entity
    @Table(name = "Comment")
    data class Comment(

            @Column(name = "date")
            var date: Date?,

            @Column(name = "message")
            var message: String?,

            @Embedded
            var sender: Company?

    ) {
        constructor() : this(null, null, null)

        @Id
        @GeneratedValue
        @Column(name = "database_id")
        var databaseId: Int? = null
    }

该关系是单向的,因此创建了一个中间表,其中包含相关实体的ID。在这种情况下,它包含DocPresentation的嵌入实体的ID和2个列:billOfLadingComments_database_idinvoiceComments_database_id。 当我评论其中一个列表时,该应用程序正常运行。如何解决该异常?

2 个答案:

答案 0 :(得分:0)

您是否尝试过通过JoinTable注释配置这两个关系?看-> JPA "@JoinTable" annotation

答案 1 :(得分:0)

我已经解决了。我使用2个“连接”列,因为在嵌入实体中有2个ID。

import numpy as np
from scipy.spatial import distance

a = np.array([[1, 5, 6, 7, 8, 7, 9], [5, 7, 8, 6, 4, 1, 2]])
b = np.array([[9, 8, 9, 5, 7, 1, 2], [1, 5, 5, 7, 2, 1, 1]])

print(distance.cdist(a, b, 'euclidean')) # Compute the euclidean distance between each pair

for i in range(0, len(a), 1):
    print(distance.euclidean(a[i,:], b[i,:])) # Do the job but too long
相关问题