繁体   English   中英

为什么SqlExceptionHelper将布尔约束违反解释为\\ x00

[英]Why does SqlExceptionHelper interpret boolean constraint violation as \x00

我有以下域对象

@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属性映射到列company_id

我创建了一个测试用例,以测试当使用相同的“名称”,“公司”和“全局”值添加访问级别时,将引发DataIntegrityViolationException 兴奋被抛出了,我的问题是关于消息的:

ohengine.jdbc.spi.SqlExceptionHelper : Duplicate entry 'Temp Level-1-\\x00' for key 'UC_name_companyId_global'

“ \\ x00”(如果保存为true则为“ \\ x01”)到底是什么?为什么SqlExceptionHelper会为其映射/解析一个布尔值? 重复输入键是否应该为“ Temp Level-1-false”?

预先感谢,格兰特

更新:

我目前正在使用MySQl 5.6

\\x00为十六进制0\\x01为十六进制1 通常(但并非总是)使用falsetrue值。 例如,MySQL将布尔列存储为BIT(1) ,因此它在内部使用0/1代替true/false

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM