文章目录
遭遇的问题
Table ‘jpa.hibernate_sequence’ doesn’t exist
因为默认使用的5.x的版本,降低版本为4.2.8.Final
就ok了
hibernate.show.sql不显示sql语句
<property name="hibernate.show_sql" value="true"/>
俺把name
值写错了
双向多对多栈溢出
java.lang.StackOverflowError
at java.lang.Long.toString(Long.java:396)
at java.lang.Long.toString(Long.java:1032)
at java.lang.String.valueOf(String.java:2982)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.yyh.jpa._04_many2one2many.Dept.toString(Dept.java:13)
at java.lang.String.valueOf(String.java:2982)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.yyh.jpa._04_many2one2many.Employee.toString(Employee.java:12)
at java.lang.String.valueOf(String.java:2982)
原因:Dept和Employee的@toString
,相互不停调用。
解决办法:去掉Dept的@toString
注解,重写toString
方法,注意不要输出员工集合,即employeeList
属性。
级联映射时的sql语法错误
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 'Order (sn) values ('sn')' at line 1
解决办法
Order
被mysql当成关键字了,所以报语法错误,我是咋找到的,因为我在执行了一下创建Order
表的代码,始终报语法错误,事实上,我找不到错误,但是我在表名上加了``以区分数据库关键字之后就成功创建了,然后我就知道Order
表应该是数据库的关键字,所以我只好修改代码里的实体类Order
为OrderBill
。