簡體   English   中英

為什么@UniqueConstraint無法從超類中找到列?

[英]Why can't @UniqueConstraint find column from super class?

我有一個實現通用屬性的超類,以及一個從其繼承的子類:

@MappedSuperClass
@NoArgsConstructor
@Getter
public abstract class BaseEntity extends Serializable {
    private static final long serialVersionUID = 1L;

    @Id
    protected String id;

    @Setter
    protected String orgId;
}

@Entity
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Table(uniqueConstraints = @UniqueConstraints(columnNames = {"org_id", "name"}))
public class SimpleEntity extends BaseEntity {

    @NotNull
    @Column(nullable=false)
    private String name;
}

這給了我JPA / Hibernate運行時錯誤,抱怨說在SimpleClass表上找不到“ org_id”列。 但是,當我查看數據庫時,表中確實存在該列。

如果我將唯一性約束注釋更改為以下內容,那么它將起作用:

@Table(uniqueConstraints = @UniqueConstraints(columnNames = {"orgId", "name"}))

當我很高興找到解決方法時,我試圖理解原因。 其他人也看到了嗎? 我是否確實必須為繼承的屬性引用Java屬性名稱,而不是其實際的列名稱?

名為“ orgId”的字段的默認映射將映射到名為“ orgId”的列,而不是“ org_id”。

因此,您需要告訴Hibernate,字段orgId的列必須為org_id

 @Column(name = "org_id")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM