关于jpa与SQL结合的几种查询

本文介绍了如何在Java中使用JPA结合SQL进行复杂查询。通过示例展示了查询结果映射到实体类的不同方法,包括直接结果映射和使用@SqlResultSetMapping注解进行列映射。
摘要由CSDN通过智能技术生成

1.查询结果为各个表各个字段(切记要查出primary key,以防后面要更新该数据)

@SuppressWarnings("unchecked")
    @Override
    public List<TPMSFine> getAlertFailFines(AlertFinishStatus failAlert) {
        String selectFields = "tf.id,tf.txnno,tpmsts.certno,tf.finePayDate,tf.operator,"
                + "tf.amount,tf.indictmentNo,tf.indictmentSendDate,tf.penaltyNoticeNo,tf.penaltyNoticeDate,"
                + "tf.penaltyNoticeNoSec,tf.penaltyNoticeDateSec
";
        String sql = "SELECT " + selectFields + " FROM " + table(TPMSFine.class) + " tf"
                + " inner join tpmstransaction tpmsts on tpmsts.TRANSACTIONDETAILS_TXNNO = tf.txnno"
                + " where tf.ALERTFINISHSTATUS is not null and  tf.ALERTFINISHSTATUS = :alertFinishStatus";
        Query query = em.createNativeQuery(sql);
        query.setParameter("alertFinishStatus", failAlert.ordinal());枚举类
        List<TPMSFine> tpmsFineList = new ArrayList<TPMSFine>();
        List<Object[]> resultList = query.getResultList();
        for (Object[] objects : resultList) {
            TPMSFine tpmsFine = new TPMSFine();
            tpmsFine.setId(Long.valueOf(objects[0].toString()));      结果映射,类似JDBC
            tpmsFine.setUniqueryCode((String)objects[1]);
            tpmsFine.setCertNo(Long.valueOf(objects[2].toString()));
            tpmsFine.setFinePayDate((java.util.Date)objects[3]);
            

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值