我想在我的OrderColumn上的表中添加NOT NULL约束。使用约束运行我的代码时,出现约束违规错误。在没有约束的情况下运行,我看到该行首先插入而没有OrderColumn,然后在使用正确的OrderColumn之后立即进行更新。有这种现象的原因吗?

我管理OrderColumn的实体:

@Entity
@Table(name="INSPECTION")
public class Inspection implements Serializable
{
    ...
    @OneToMany(cascade={CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REMOVE}, orphanRemoval=true)
    @OrderColumn(name="LIST_INDEX", nullable=false)
    @JoinColumn(name="INSPECTION_ID")
    private List<RecommendationInstance> recommendations;
    ...
}


这个问题源于Why is JPA ignoring my @OrderColumn in a basic use case?,我对为什么没有插入OrderColumn感到困惑。可以在此处看到其他代码示例。

最佳答案

这里的问题在于,RecommendationInstance实体是一个独立的实体,没有针对订单列的映射。 Eclipselink旨在仅从实体本身创建插入。有一个功能要求具有eclipselink存储语句,并在处理其他映射时将其添加到它们中,但是我仍然不方便。

09-26 00:04