关于hibernate查询父子实体字段重复的取值问题处理

背景:最近做的一个建模相关的项目,使用hibernate获取存在继承关系的实体类的数据的列表,假设实体a为父类,b为子类。其中a,b都有共同的字段field。由于a,b数据需要一起查出来,并且a中的字段field取来自a的值,b中的field字段取来自b的值。然而实际我们使用了自定义的工具类获取了T entity中所有的不重复的field的list。恰好field被处理成了a中的field。导致b中的field取的值一直是其父类的值。

要解决这个问题,需要用到spring的ReflectionUtils工具类:实际解决问题的只有三行代码:

List<Field> fieldList=BeanUtils.getNotRepeatedField(new LInkedList<>(),cls,new HashSet<>());
......
for(Field field : fieldList){
// ReflectionUtils是spring中的一个很重要的工具类 Field tempField=ReflectionUtils.getField(entity.getClass(),fieldName); // setAccessible为true,可以访问private修饰的字段,否则会报错
tempField.setAccessible(true); Object value=tempField.get(entity); }

 

posted @ 2021-03-09 23:40  伏笔lisa  阅读(141)  评论(0)    收藏  举报