Hibernate 选出所有账户最后的一条记录

该代码段展示了如何在Java中使用Hibernate的DetachedCriteria进行多条件查询。它创建了两个子查询dc1和dc2,分别对TaRiskProfilingDetail类进行JOIN操作,并通过创建别名和设置条件来关联数据。查询涉及旅行代理的id匹配、日期的最大值投影、特定状态筛选以及按评分排序。最后,返回满足条件的列表。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    public List<TaRiskProfilingDetail> getRiskImpactList() {
        DetachedCriteria dc1 = DetachedCriteria.forClass(TaRiskProfilingDetail.class, "TaRS1");
        DetachedCriteria dc2 = DetachedCriteria.forClass(TaRiskProfilingDetail.class, "TaRS2");
        dc1.createAlias("travelAgent", "Ta1", JoinType.LEFT_OUTER_JOIN);
        dc2.createAlias("travelAgent", "Ta2", JoinType.LEFT_OUTER_JOIN);
        dc2.add(Restrictions.eqProperty("Ta1.id", "Ta2.id"));
        ProjectionList projections = Projections.projectionList();
        projections.add(Projections.max("TaRS2.createdDate"), "createdDate");
        dc2.setProjection(projections);
        dc1.add(Subqueries.propertyEq("TaRS1.createdDate", dc2));
        dc1.setResultTransformer(DetachedCriteria.DISTINCT_ROOT_ENTITY);
        dc1.createAlias("Ta1.licence", "licence", JoinType.LEFT_OUTER_JOIN);
        addIn(dc1, "licence.status.code", Codes.TaStatuses.GENERALLY_ACTIVE);
        dc1.addOrder(Order.desc("riScore"));
        return getList(dc1);
    };

可以认为,dc1 选出了一个记录,之后在dc2 中进行筛选。也就是select 操作是一条记录。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值