[英]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.