Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java hibernate两列唯一索引无法更新值_Java_Mysql_Hibernate_Jpa - Fatal编程技术网

Java hibernate两列唯一索引无法更新值

Java hibernate两列唯一索引无法更新值,java,mysql,hibernate,jpa,Java,Mysql,Hibernate,Jpa,因此,我试图添加一个使用两列的唯一约束。我在db中添加了唯一的约束,我有以下Java代码 @Entity @Table( name = "test_table", uniqueConstraints = @UniqueConstraint( columnNames = { "other_table_id", "sort_order" }, name = "my_unique_const

因此,我试图添加一个使用两列的唯一约束。我在db中添加了唯一的约束,我有以下Java代码

@Entity
@Table(
    name = "test_table",
    uniqueConstraints = @UniqueConstraint(
        columnNames = {
            "other_table_id",
            "sort_order"
        },
        name = "my_unique_constraint")
)
class SomeTable {

    private String label;

    @ManyToOne(optional = false)
    @JoinColumn(name = "other_table_id", nullable = false)
    private OtherTable otherTable;

    @NotNull
    @Column(name = "sort_order", nullable = false)
    private int sortOrder;
}
当我修改此表的排序并更新得到的记录时

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException:
 Duplicate entry '1-2' for key 'my_unique_constraint'

如何实现
@UniqueConstraint
,以避免出现此类错误。

之所以出现此错误,是因为UniqueConstraint没有分开

因此,我的方法是分离两个约束:

@Table(
    name = "test_table",
    uniqueConstraints = {
            @UniqueConstraint(columnNames = "other_table_id"),
            @UniqueConstraint(columnNames = "sort_order")
    },
        name = "my_unique_constraint")
)

你能提供你的修改代码吗?你是说完整的代码吗?我想知道更新是怎么完成的。您是真的进行了更新,还是真的试图插入第二条记录。我调用hibernate saveOrUpdate来更新Entity,两者都是update。。数据已经使用hibernate保存方法插入。我相信这将创建两个唯一的约束,我们不能在一个表中有两次相同的排序顺序。我想做一个唯一的约束,这样其他的表id就不会有重复的排序顺序。