[英]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
。 通常(但並非總是)使用false
和true
值。 例如,MySQL將布爾列存儲為BIT(1)
,因此它在內部使用0/1
代替true/false
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.