Spring JPA 自定义实体类和自定义sql语句多表关联复杂子查询
最近在写一个功能,因为不是很熟悉jpa操作,接触时间不久,所以又习惯性地用了sql语句来查询,主要是嫌麻烦,想返回的数据用一条数据返回来就可以了,所以就用spring jpa写了个自定义的实体类来装我专门返回来的数据字段,然后sql也有点复杂,join了几张表,也写了一点子查询什么的,估计后期要改这个sql,但是目前是为了方便,临时写的sql,后期数据量大的话,这个sql语句如果不优化,就不好加载了,会比较慢,然后下面讲一下一些注意点,这也是踩的一些坑吧,最后再把一些图片贴上,给各位参考参考:
注意点:
1,自定义实体类的话,首先是要把这个类放到Repository寻找的model包路径里边的,不然会报错,说你新建的类不存在,创建Bean异常;
2,自定义的实体类之后,要新建一个专门的Repository来调用它,一个Repository对应一个实体;
3,@Column注解,在spring jpa中的命名默认是下划线分隔的字段命名,弄成驼峰形式的话,也会转回下划线的格式,这个挺坑的,反正我也弄了挺久,那时候不知道spring jpa有个这样的默认情况,记得@Column的命名要与sql语句中的别名对应一样,不然也会报错,说找不到这个字段;
4,如果@Column注解,先用驼峰命名的话,就可以在配置文件里配置,配置一个好像是ImprovedNamingStrategy的命名配置吧,有点忘记了,然后就可以用了,可以参考别人的文章,这里有说到:https://blog.****.net/54powerman/article/details/76175482
5,自定义的实体类,记得要有@Entity和@Id的起码注解,不然识别不了。
最后把我自定义的实体类和sql语句贴上来,给大家参考一下:
自定义的实体类(省略get,set):
下面是我的sql语句:
好了,就这样,这sql其实算是凑合用的,欢迎各位大佬随时指点,谢谢!
2018年12月14日