org.springframework.dao.DataIntegrityViolationException: Error attempting to get column

前段时间又碰到了这个问题,说实话,真心塞!之前还有个哥们问我来着,当时直接就帮忙解决了,然后,再次碰到,居然弄了一个下午!

        org.springframework.dao.DataIntegrityViolationException: Error attempting to get column_第1张图片

写个简单的文档记录下,引以为戒。

这个报错比较坑的就是,提示和错误关系不大,提示的是某个属性的get方法没有获取到,实际上呢?

这个类一定是有get、set方法,或者是添加了@Data注解。

而且这个提示一般都是ORM(对象关系映射)的时候,出现的错误!

org.springframework.dao.DataIntegrityViolationException: Error attempting to get column_第2张图片

如果你真的揪着这个属性值不放,那么恭喜你!估计也要耗时一下午甚至一个晚上来搞这个东东了!

        org.springframework.dao.DataIntegrityViolationException: Error attempting to get column_第3张图片

当然,也有可能你代码直接回退,重新使用一个方法实现,也能规避这个错误~

我遇见这个错误的时候,是给对象添加@Builder的时候,对数据进行查询的时候,对象关系映射发生了错误。

为啥会这样呢?

当然是@Builder惹的祸啊,使用@Builder相当于直接使用了建造者模式,不熟悉的可以去看下之前我手写的建造者模式。

org.springframework.dao.DataIntegrityViolationException: Error attempting to get column_第4张图片

可以看到,对象的构造方法直接被覆盖,也就是说,无参构造函数没有了!!当然你也可以添加@Builder注解编译成class文件,再反编译一下,应该是和建造者模式极其类似的。

由于无参构造方法不存在,进行对象关系映射的时候,自然也就无法映射到对象了,也就是说这个错误真正的问题是,没有无参构造方法!!

你需要做的仅仅是添加一个构造方法!

   @Tolerate
    public Desk() {
    }

 当然,还需要添加一个@Tolerate注解,也就是允许的意思,防止被@Builder注解覆盖!

这个问题很简单,关键是就怕绕进去,一直看报错,那就真的头大了~

        org.springframework.dao.DataIntegrityViolationException: Error attempting to get column_第5张图片

就是个简单的问题,也不多扯了,不过,牢记报错,规避bug,立文为证,嘻嘻~

点个赞,给个鼓励呗~

no sacrifice,no victory~

你可能感兴趣的:(java-基础知识,Builder报错,ORM映射问题,Tolerate,缺少构造函数,建造者模式)