gpt4 book ai didi

java - Hibernate 将不会更新具有可为空 OrderColumn 的表

转载 作者:行者123 更新时间:2023-11-30 06:24:34 24 4
gpt4 key购买 nike

我想使用 @OrderColumn 更新现有模型。因为表中已经存在数据,所以我想将其设为可为空,这是默认值。

@ManyToMany(fetch = FetchType.EAGER)
@OrderColumn(name = "widget_order", nullable = true)
private List<Widget> widgets = new ArrayList<>();

但是更新失败并显示消息:

org.hibernate.tool.schema.spi.SchemaManagementException:
Unable to execute schema management to JDBC target
[alter table Dashboard_Widget add widget_order number(10,0) not null]

为什么 hibernate 仍然尝试使 order 列不可为空,我需要做什么来修复它?

最佳答案

我通过创建一个新数据库并将其与当前数据库进行比较发现了根本问题。

我不知道的是,数据结构之前是一个Set。生成的组合主键由两个对象的 id 组成。随着 List 的更改,不再保证唯一性,尽管实际上是这样。因此,新的组合主键不再包含小部件 id,而是包含订单值。

这最终会产生 NOT NULL 约束。

关于java - Hibernate 将不会更新具有可为空 OrderColumn 的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47468133/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com