在我的应用程序中,当我在一个类中包含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_id
和invoiceComments_database_id
。
当我评论其中一个列表时,该应用程序正常运行。如何解决该异常?
答案 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