我有以下域对象
@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
。
我的问题是关于消息:
o.h.engine.jdbc.spi.SqlExceptionHelper : Duplicate entry 'Temp Level-1-\x00' for key 'UC_name_companyId_global'
到底是什么' \ x00' (或' \ x01'如果保存为true),为什么SqlExceptionHelper映射/解析布尔值? 复制条目键不应为“Temp Level-1-false'?
”提前致谢, 格兰特
更新
我目前正在使用MySQl 5.6
答案 0 :(得分:2)
\x00
为十六进制0
,\x01
为十六进制1
。通常(但不总是)使用false
和true
的值。例如,MySQL将布尔列存储为BIT(1)
,因此它在内部使用0/1
而不是true/false
。