我有以下JPA实体类(示例情况)。房子属于一条街。一条街有很多房屋。Hibernate使用MySQL生成无效的SQL查询
@Entity
public class House {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
public Integer id;
public String name
@ManyToOne
public Street street;
}
@Entity
public class Street {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
public Integer id;
@OneToMany(mappedBy="street")
public Set<House> houses;
}
我有生成类型设置为标识,应该自动分配一个新的ID。
在创建一个新街道的新房子时,我必须先创建并坚持街道,然后是房子。这是因为我没有将CascadeType设置为PERSIST,因此必须手动完成[1]。然而,当插入一个新创建的街道:
Street street = new Street();
entityManager.persist(street);
休眠/ JPA产生下面的SQL查询:
insert into Street default values
其MySQL不喜欢。
Caused by: 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 'default values' at line 1
任何想法为什么?我使用Java 6,MySQL 5.0.67和Hibernate的JPA实现(版本3.2.1.ga)。
[1] EJB 3操作页面318-319
谢谢,你救了我几个小时的辛勤工作。 – Heisenberg 2015-09-15 12:17:33
我使用'key'和'value'作为列名。 Woops。 – 2016-05-07 12:47:16