我无法创建枚举以在MySQL DB中保存为字符串.我有一个带有字段的MySQL表:
status varchar(50)
枚举
public enum Status {OPEN, CLOSED, CANCELLED, DONE}
Run Code Online (Sandbox Code Playgroud)
实体
@Column(name="status", nullable=false)
private Status status;
@Enumerated(EnumType.STRING)
public Status getStatus() {return status;}
Run Code Online (Sandbox Code Playgroud)
当我启动我的应用程序时,我在获取数据时出现以下错误: SQLException:getInt()'OPEN'的值无效
另外我无法创建实体,我有一个SQLGrammarError.它试图用status = OPEN而不是status ='OPEN'来保存对象.
我按照文档JavaDoc Persistence Enum 编写了 本教程Jpa和Enums
通过在属性状态上添加@Enumerated(EnumType.STRING).提取错误不存在,但我仍然有相同的错误来创建实体.
错误日志
[DEBUG] com.vallois.valcrm.web.rest.BusinessResource - REST request to save Business : Business{id=null, name='test', description='okokok', createUpdateInfo=CreateUpdateInfo{createdUsername='user', updatedUsername='null', createdDate=Thu May 21 16:04:54 CEST 2015, updatedDate=null}, status=CLOSED, lock=PUBLIC}
Hibernate: insert into BUSINESS (created_date, created_name, updated_date, u pdated_name, description, lock, name, status, user_id) values (?, ?, ?, ?, ?, ?, ?, ?, ?)
[WARN] org.hibernate.engine.jdbc.spi.SqlExceptionHelper - SQL Error: 1064, SQLState: 42000
[ERROR] org.hibernate.engine.jdbc.spi.SqlExceptionHelper - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'lock, name, status, user_id) values ('2015-05-21 16:04:54', 'user', null, null, ' at line 1
Run Code Online (Sandbox Code Playgroud)
移动@Enumerated到现场
@Column(name="status", nullable=false)
@Enumerated(EnumType.STRING)
private Status status;
Run Code Online (Sandbox Code Playgroud)
编辑
您获得的例外与枚举无关.在MySQL中lock是一个保留字,你必须将它的名字改为其他东西.