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

时间:2012-02-23 11:33:22

标签: java hibernate java-ee orm hibernate-mapping

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

DestinationAlias and Destination

在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”?

1 个答案:

答案 0 :(得分:2)

唯一约束注释需要列名列表。所以在你的情况下,不,它不应该是'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