【发布时间】:2009-01-14 22:23:10
【问题描述】:
我有以下 JPA 实体类(示例)。一所房子属于一条街道。一条街有许多房子。
@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);
Hibernate/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 in Action 页面 318-319
【问题讨论】: