问题描述
最近项目有用到Jpa,因为Jpa这种ORM框架和ibatis这样的框架不同,使用者不需要自己写SQL就可以对数据库完成增删查改,但是我在进行单元测试的时候发现在调用Jpa.save(Entity e)方法的时候,爆出的异常是SQL语法和版本不符,这就意味着SQL写错了
问题原因
我们都知道,JPA在一般情况下是不需要我们自己写SQL的,那么为什么会出现SQL语法错误呢?
原因就是在数据库上出了问题。
在debug的过程中我发现,不仅SQL语法写错会爆出语法异常,其他情况如数据库要求非空但是没有插入字段,表名是SQL关键字等等这些都会爆出SQL语法错误异常
解决办法
- 修改数据库表和字段名称
- 因为Jpa默认是把Entity的实体全部插入,我们需要在Entity类中加入
@DynamicInsert这个注解,表明不是全部插入,这样我们类的字段如果有空值的话就不会把空值插入数据库的非空字段中(前提是数据库的非空字段有默认值)
探讨了在使用JPA框架进行单元测试时遇到的SQL语法异常问题,分析了异常出现的原因,主要在于数据库配置或实体类与数据库不匹配导致。文章提供了通过使用@DynamicInsert注解来解决因字段空值引起的SQL语法错误的方法。
713

被折叠的 条评论
为什么被折叠?



