java - 对于这种情况,如何在 hibernate 中定义唯一约束?

标签 java hibernate jakarta-ee orm hibernate-mapping

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

DestinationAlias and Destination

在 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/

相关文章:

java - 恩弗斯 : wrong audit table on a Spring MVC project

java - 如何使用 Struts 执行 Junit 测试 - Ibatis

java - 仅通过知道异或加密的字节数组和 key 大小来获取 key 字符串

java - 在 JPA 中使用 nativeQuery 时出现“无法提取 ResultSet”错误

java - 在 Java EE 应用程序中使用 hibernate

java - 如何配置 OpenEntityManagerInViewFilter Spring MVC

java - 如何将 VM 参数传递给 tomcat maven 插件?

hibernate - 如何验证数据库中是否存在记录?

java - 如何显示JAVA链表中的对象

java - Lucene RAMDirectory 已弃用 - 无论如何如何仅保留目录 RAM?