【问题标题】:Hibernate inserting null for OrderColumn value休眠为 OrderColumn 值插入 null
【发布时间】:2018-03-12 17:24:56
【问题描述】:

我在我的一个实体中定义了以下集合:

@ElementCollection(targetClass = Role.class)
@CollectionTable(name = "user_roles", joinColumns = { @JoinColumn(name = "user_id") })
@Column(name = "role_name", nullable = false)
@Enumerated(EnumType.STRING)
@OrderColumn(name = "pos")
public Set<Role> roles;

但是当我尝试保存实体时,Hibernate 尝试将“null”插入“pos”列,但由于它具有非 null 约束,因此失败。 (编辑:如果我删除非空约束,它会在每一行中插入空值。)

为什么 Hibernate 不填充订单列?

【问题讨论】:

  • AFAIR,它首先插入 null,然后更新行以设置它们的顺序。
  • @JBNizet 我尝试删除非空约束,但随后将它们全部保留为空。

标签: java hibernate


【解决方案1】:

您在不是 Ordered 集合的 Set 上使用了 OrderColumn。我怀疑这可能是问题所在。

你可以把它从Set改成List试试。

【讨论】:

  • 是的,似乎就是这样。由于底层的 Set 是一个 LinkedHashSet,我认为这不会是一个问题,因为它有一个顺序,但我想它需要是一个实际的 List。
猜你喜欢
  • 1970-01-01
  • 2020-10-21
  • 1970-01-01
  • 1970-01-01
  • 2016-08-21
  • 2015-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多