为什么sqlexceptionhelper将布尔约束冲突解释为\x00

ltqd579y  于 2021-06-25  发布在  Mysql
关注(0)|答案(1)|浏览(247)

我有以下域对象

@Table(uniqueConstraints={@UniqueConstraint(columnNames={"name", "company_id", "global"}, name="UC_name_companyId_global")})
@Entity
@Audited
public class AccessLevel implements Serializable, GlobalEntityInstance {

private static final long serialVersionUID = -7215569721971710808L;

  @Size(min = 2)
  @Column(nullable = false)
  private String name;

  @ManyToOne(optional = false)
  private Company company;

  @Column
  private boolean global = false;

  @Column(nullable = false)
  private GeneralStatus status;
}

这个 company 属性Map到列 company_id .
我已经创建了一个测试用例来测试当一个访问级别被添加到相同的'name'、'company'和'global'值时 DataIntegrityViolationException 被抛出。我的问题是关于这个信息: o.h.engine.jdbc.spi.SqlExceptionHelper : Duplicate entry 'Temp Level-1-\x00' for key 'UC_name_companyId_global' 究竟什么是“\x00”(如果保存为true,则为“\x01”),为什么sqlexceptionhelper会将布尔值Map/解析到它?重复的输入键不应该是'temp level-1-false'吗?
事先谢谢你,格兰特
更新:
我目前正在使用MySQL5.6

px9o7tmv

px9o7tmv1#

\x00 是十六进制 0 ,和 \x01 是十六进制 1 . 通常(但不总是)用于 false 以及 true . 例如,mysql将布尔列存储为 BIT(1) ,所以它是和 0/1 内部而不是 true/false .

相关问题