我有一个包含以下字段的类:
@Entity
@Table(name = "customers")
public class Customer {
@Id
int id;
String name;
String items;
String when;
String where;
... // getters and setters
}
我在 MySQL 数据库中创建了一个名为“customers”的表:
列:
id int(11) PK
name varchar(45)
items varchar(45)
when varchar(45)
where varchar(45)
我正在尝试将类添加到数据库中,如下所示:
Customer customer = new Customer();
customer.setId(1);
customer.setName("Rextuz");
customer.setItems("red_rose1");
customer.setWhen("1_1_2015");
customer.setWhere("len");
... // getting a session factory
Session session = sessionFactory.openSession();
session.beginTransaction();
session.save(customer);
session.getTransaction().commit();
session.close();
我收到以下错误:
Hibernate: insert into customers (items, name, when, where, id) values (?, ?, ?, ?, ?)
дек 14, 2014 12:20:17 AM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
WARN: SQL Error: 1064, SQLState: 42000
дек 14, 2014 12:20:17 AM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
ERROR: 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 'when, where, id) values ('red_rose1', 'Rextuz', '1_1_2015', 'len', 1)' at line 1
有什么解决办法吗?我使用 org.hibernate.dialect.MySQLDialect
最佳答案
您在 Customer
类中使用 SQL 关键字 when
和 where
,这就是当 hibernate 触发对 sql 数据库的查询时出现异常的原因,如果可能的话,您可以更改 Customer
类属性的名称。
或者
您必须执行类似以下代码的操作。
public class Customer {
....
@Column("TX_WHEN")
String when;
@Column("TX_WHERE")
String where;
... // getters and setters
}
并且您必须相应地更改您的客户表。
关于java - hibernate :MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27463307/