spring-data-jpa根据条件自动限制查询结果

发布于 2022-09-06 23:07:54 字数 594 浏览 12 评论 0

这是一个闲来无事的问题帖,编程的入门小菜鸟遇到的问题,没有解决思路,不知哪位前辈有思路,还望指点一二。
是这样的

  1. 项目使用的是spring-data-jpa作为持久层框架,用面向对象的方式来读取数据库。
  2. 现在能够处理一对一、一对多、多对多三种关系,并把他们最为json数据输出出来。
  3. 当我查询一个结构较为复杂的对象的时候,我会得到这个对象的所有的和他有关的属性比如A类有name,age,password两个字段,这时B类继承了A类,所以当我查询B类的时候会把name,age,password全部查询出来,现在我想只查询name,age 而不想显示password怎么实现呢?我希望的不是把password全部屏蔽掉,而是在本次查询中把他屏蔽掉,举个栗子,如果再有个C类同时继承了A,查询C的时候是会把name,age,password全部查询出来的。、
  4. 同3的表述一样,但是现在的属性变成了对象,A类里面有个对象A1,B2,C3 ,因为B类C类继承了A类,所以当我查询B C的时候会把B2 C3的所有属性全部查询出来,但是想在我想在查询B类的时候不显示C3,在查询C类的时候不显示B,这个如何做呢?

希望有思路的大神前辈停停脚给小弟指明道路,在此感谢!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

煮酒 2022-09-13 23:07:54

假设有对象A,里面有属性name,age,password,对象查询似乎只能全部查出来,无法查出指定对象,而且查一个字段和查全部字段性能几乎无差,个人认为你这是伪需求。

假设有对象A,B.
A里面有属性name,age,b,同时A与B配置了一对多的关系,默认情况下查询A对象,B对象不会被立即查出,原因是一对多的情况下,FetchType fetch() default LAZY;,如果想B这个集合也被全部查出来,只需设置@OneToMany(fetch = FetchType.EAGER)
如果A和B是多对一的关系,默认查询A对象,B对象也会被查询出来,只需要设置@ManyToOne(fetch = FetchType.LAZY),B对象就会被立即查询。你可以设置完设计好日志看控制台打印的sql语句测试一下。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文