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