我有以下域对象
@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
1条答案
按热度按时间px9o7tmv1#
\x00
是十六进制0
,和\x01
是十六进制1
. 通常(但不总是)用于false
以及true
. 例如,mysql将布尔列存储为BIT(1)
,所以它是和0/1
内部而不是true/false
.