数据库级别的 Destination 和 DestinationAlias 如下所示:
在 DestinationAlias 中,(idDestination, alias) 是唯一的。
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
关于java - 对于这种情况,如何在 hibernate 中定义唯一约束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9412212/