gpt4 book ai didi

java - Hibernate 使用 MySQL 生成无效的 SQL 查询

转载 作者:搜寻专家 更新时间:2023-10-30 21:15:03 25 4
gpt4 key购买 nike

我有以下 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。

在创建带有新 Street 的新 House 时,我必须首先创建并保留 Street,然后是 House。这是因为我没有将 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 pages 318-319

最佳答案

如果您的 SQL 语句没有错误,那么您可能需要检查您的表列名称,因为它可能包含 Mysql 使用的预定义名称;例如不能用作表列名的“列”

关于java - Hibernate 使用 MySQL 生成无效的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/444932/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com