作者:重庆制造漫画社 | 2023-08-31 21:35
我有以下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 houses;
}
我将生成类型设置为identity,应该自动分配新ID.
在创建一个拥有新街道的新房子时,我必须首先创建并坚持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第318-319页
1> 小智..: 如果您的SQL语句中没有错误,那么您可能需要检查表列名,因为它可以包含Mysql使用的预定义名称; 例如'column',它不能用作表列名
2> Bill Karwin..: 标准SQL指定此可选语法INSERT
:
INSERT INTO DEFAULT VALUES
这是合法的SQL语法,例如,Microsoft SQL Server,PostgreSQL和SQLite支持,但不支持Oracle,IBM DB2或MySQL.
MySQL支持其他语法,可以实现相同的结果:
INSERT INTO () VALUES ()
INSERT INTO (col1, col2, col3) VALUES (DEFAULT, DEFAULT, DEFAULT)
在Hibernate中,您应该正确配置 SQL方言,并且由Hibernate来为目标RDBMS品牌生成有效的SQL.
import org.hibernate.cfg.Configuration;
Configuration cfg = new Configuration();
cfg.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLInnoDBDialect");
您还可以通过放置hibernate.properties
在类路径的根目录中指定的文件来指定属性.
3> Stepan Yakov..: 您可能遇到此异常的另一种情况是您将单词保留为表的列.例如,'to'和'from'不适合MySQL的clumn名称.这显然是Hibernate中的错误,它不检查这样的列,而且即使没有创建表也继续工作,没有错误.
推荐阅读
如何解决《在R中随机抽样数据帧为3组》经验,为你挑选了1个好方法。 ...
[详细]
如何解决《如果表为空,则CodeIgniterresult_array()出现布尔错误》经验,为你挑选了1个好方法。 ...
[详细]
如何解决《通过自动过滤器删除时间过长》经验,为你挑选了1个好方法。 ...
[详细]
如何解决《Powershell编号排序》经验,为你挑选了1个好方法。 ...
[详细]
如何解决《查找RecyclerView中第一个可见项目的顶部偏移量》经验,为你挑选了1个好方法。 ...
[详细]
如何解决《Cygwin/MinGW中Gitdifftool的速度非常慢》经验,为你挑选了0个好方法。 ...
[详细]
如何解决《跳过未知行数来读取标题pythonpandas》经验,为你挑选了1个好方法。 ...
[详细]
如何解决《找到"平衡"点的算法》经验,为你挑选了0个好方法。 ...
[详细]
如何解决《带有Fabric画布的FileSaver.js》经验,为你挑选了1个好方法。 ...
[详细]
如何解决《确定Laravel5中是否存在文件》经验,为你挑选了4个好方法。 ...
[详细]
如何解决《C字符串赋值给出了分段错误》经验,为你挑选了1个好方法。 ...
[详细]
如何解决《Firebase安卓工作室从FirebaseListAdapter中删除项目》经验,为你挑选了1个好方法。 ...
[详细]
如何解决《时间表SQLPresto》经验,为你挑选了0个好方法。 ...
[详细]
如何解决《安装VisualStudio2015Update1给了我很多:"包没有正确加载"》经验,为你挑选了0个好方法。 ...
[详细]
如何解决《如何使用jQuery获取特定的表单元素》经验,为你挑选了1个好方法。 ...
[详细]
如何解决《Ng-animate使用$templateRequest装饰器停止工作》经验,为你挑选了0个好方法。 ...
[详细]
如何解决《用于循环优化的Java》经验,为你挑选了0个好方法。 ...
[详细]
如何解决《Angular将样式应用于ngRepeat中的第一个可见项》经验,为你挑选了1个好方法。 ...
[详细]
如何解决《星号的位置会影响指针吗?》经验,为你挑选了1个好方法。 ...
[详细]
如何解决《Babelv6:如何/我可以编写一个添加新语法的插件(即一个新的运算符)?》经验,为你挑选了0个好方法。 ...
[详细]