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

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

  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,这个如何做呢?

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

阅读 719
评论
    1 个回答

    假设有对象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语句测试一下。

      撰写回答

      登录后参与交流、获取后续更新提醒