Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
枚举Java未保存为带有枚举注释的字符串_Java_Jpa_Enums - Fatal编程技术网

枚举Java未保存为带有枚举注释的字符串

枚举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;}

我无法在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;}
启动应用程序时,在获取数据时出现以下错误: 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中的一个名称,您必须将其名称更改为其他名称。