【问题标题】:Java Hibernate exception MySQLSyntaxErrorException: You have an error in your SQL syntaxJava Hibernate 异常 MySQLSyntaxErrorException: You have an error in your SQL syntax
【发布时间】:2015-11-14 04:49:21
【问题描述】:

我有休眠实体,当我尝试将其插入 MySQL 数据库时出现异常:

@Entity
public class Pick {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int pid;

@OneToOne
private Match_soccer match;

@OneToOne
private Algo1 algo;

@Column(length = 100)
private String pick;

@Column(length = 5)
private double limit;
...

当我尝试使用休眠插入 MySQL 数据库时:

Pick pick = new Pick();
pick.setMatch(match);
pick.setAlgo(a);
pick.setLimit(2.5);
pick.setPick("under");

PickDAO pd = new PickDAO();
pd.insertMatch(pick);

我得到 MySQL 异常:

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 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 'limit, match_mid, pick) values (1, 2.5, 9358, 'under')' at line 1

【问题讨论】:

  • 您是否尝试将变量名称 limit 更改为其他名称?
  • 你能显示 insertMatch 方法吗?

标签: java mysql hibernate


【解决方案1】:

Limit 是一个MySQL reserved word。将实体属性重命名为其他名称

【讨论】:

  • 这就是我的猜测 :) +1。
  • 是的,这是我的问题 :)
  • 老实说,这似乎是 mysql 的休眠方言中的一个错误。完全有可能有一个名称是保留字的列或表,您只需正确引用它即可。方言应该足够聪明,可以为您解决这个问题。
猜你喜欢
  • 2017-09-14
  • 1970-01-01
  • 1970-01-01
  • 2020-10-10
  • 2012-11-20
  • 2014-10-14
  • 1970-01-01
  • 1970-01-01
  • 2022-12-28
相关资源
最近更新 更多