繁体   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