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



在DestinationAlias中,(idDestination,别名)是唯一的。

适用于DestinationAlias的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”?

最佳答案

唯一约束注释需要列名列表。因此,就您而言,不,它不应该是“ MAINCITY”。还要注意,最好的做法是使用与实际数据库字段相同的大小写,因为某些数据库区分大小写。因此,您的代码应为:

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


参见:http://docs.oracle.com/javaee/6/api/javax/persistence/UniqueConstraint.html

07-24 16:33