栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

添加两个变量后,BeanCreationException

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

添加两个变量后,BeanCreationException

为什么单独的列表必须是实例变量?!为什么不简单地创建一个

getCats
方法(和其他方法)并简单地过滤
pets
集合呢?试图映射所有内容,恕我直言,事情变得过于复杂。

@Entity@Table(name = "owners")public class Owner extends Person {    @oneToMany(cascade = CascadeType.ALL, mappedBy = "owner",  fetch=FetchType.EAGER)    private Set<Pet> pets;    public Set<Pet> getCats() {        Set<Pet> cats = new HashSet<Pet>();        for (Pet pet : getPetsInternal()) { if (pet.getType().getName().equals("cat")) {     cats.add(pet); }        }        return cats;    }}

缺点是每次需要时都会重新创建集合。您可以使用Google Guava之类的工具来简化此操作,并创建一个过滤器列表。

@Entity@Table(name = "owners")public class Owner extends Person {    @oneToMany(cascade = CascadeType.ALL, mappedBy = "owner",  fetch=FetchType.EAGER)    private Set<Pet> pets;    public Set<Pet> getCats() {        return Sets.filter(getPetsInternal(), new Predicate<Pet>() { public boolean apply(Pet pet) {      return pet.getType().getName().equals("cat") }        });  }}

您还可以在

parsePets
方法内部进行操作并使用它进行注释,
@PostLoad
以便在所有者从数据库中检索到该方法之后将调用该方法。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/466986.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号