gpt4 book ai didi

java - 为什么 SqlExceptionHelper 将 boolean 约束冲突解释为\x00

转载 作者:行者123 更新时间:2023-11-29 06:49:03 25 4
gpt4 key购买 nike

我有以下域对象

@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:键“UC_name_companyId_global”的重复条目“Temp Level-1-\x00”

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

提前致谢,格兰特

更新:

我目前使用的是 MySQl 5.6

最佳答案

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

关于java - 为什么 SqlExceptionHelper 将 boolean 约束冲突解释为\x00,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48222852/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com