枚举Java未保存为带有枚举注释的字符串
我无法在MySQL数据库中创建要保存为字符串的枚举。 我有一个带有字段的MySQL表: 状态varchar(50) 枚举枚举Java未保存为带有枚举注释的字符串,java,jpa,enums,Java,Jpa,Enums,我无法在MySQL数据库中创建要保存为字符串的枚举。 我有一个带有字段的MySQL表: 状态varchar(50) 枚举 public enum Status {OPEN, CLOSED, CANCELLED, DONE} 实体 @Column(name="status", nullable=false) private Status status; @Enumerated(EnumType.STRING) public Status getStatus() {return status;}
public enum Status {OPEN, CLOSED, CANCELLED, DONE}
实体
@Column(name="status", nullable=false)
private Status status;
@Enumerated(EnumType.STRING)
public Status getStatus() {return status;}
启动应用程序时,在获取数据时出现以下错误:
SQLException:getInt()“OPEN”的值无效
此外,我无法创建实体,我有一个SQLGrammarError。它试图以status=OPEN而不是status=OPEN保存对象
我遵循了文档
我试过这个
通过在属性状态上添加@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
将
@Enumerated
移动到字段
@Column(name="status", nullable=false)
@Enumerated(EnumType.STRING)
private Status status;
编辑
您得到的异常与枚举无关
lock
是MySQL中的一个函数,您必须将它的名称更改为其他名称。JPA允许在字段或属性上进行注释,其中@Id的位置指定考虑这两个字段中的哪一个
因此,在这种情况下,我想您必须将
@Enumerated(EnumType.STRING)
移动到字段。显示您的配置,特别是包括您的表架构。它不起作用,仍然有创建实体的错误。枚举正试图创建为status=OPEN,而不是status='OPEN'。我有一个MySQL错误。你能发布异常和导致异常的代码吗?你得到的异常与枚举无关lock
是MySQL中的一个名称,您必须将其名称更改为其他名称。