Java 在这种情况下,如何在hibernate中定义唯一约束?

Java 在这种情况下,如何在hibernate中定义唯一约束?,java,hibernate,jakarta-ee,orm,hibernate-mapping,Java,Hibernate,Jakarta Ee,Orm,Hibernate Mapping,数据库级别的Destination和Destination如下所示: 在DestinationAlias中,(idDestination,alias)是唯一的 目的地的POJO: @Entity @Table(name = "DESTINATIONALIAS", uniqueConstraints = { @UniqueConstraint(columnNames={"IDDESTINATION", "ALIAS"}) } ) public final class Destin

数据库级别的Destination和Destination如下所示:

在DestinationAlias中,(idDestination,alias)是唯一的

目的地的POJO:

@Entity
@Table(name = "DESTINATIONALIAS",
uniqueConstraints = { @UniqueConstraint(columnNames={"IDDESTINATION", "ALIAS"}) }
        )
public final class DestinationAlias {

// ..

    @ManyToOne(fetch=FetchType.LAZY, cascade={CascadeType.ALL})
    @JoinColumn(name="IDDESTINATION", nullable=false)
    public Destination getMainCity() {
        return mainCity;
    }
}

唯一约束应该是IDDESTINATION还是“MAINCITY”?

唯一约束注释需要列名称列表。所以在你的情况下,不,它不应该是“主城”。还请注意,最好使用与实际数据库字段相同的大小写,因为有些数据库区分大小写。因此,您的代码应该是:

@Entity
@Table(name = "DestinationAlias", uniqueConstraints = { @UniqueConstraint(columnNames = {
        "idDestination", "alias" }) })
public final class DestinationAlias {
    // ....
}
见: