【问题标题】:Spring Data with Custom Query and criteria具有自定义查询和条件的 Spring Data
【发布时间】:2018-08-20 00:53:22
【问题描述】:

我正在使用 Spring 数据从数据库中执行结果列表。结果不是实体类型。这是自定义dto。我想在查询中添加条件。如果条件不为空,我想将我的查询与条件连接起来。这是我的代码。

public interface JournalReportRepository extends JpaRepository<TxnTransactionLogEntity, String>{
@Query(value = "SELECT new com.bbi.rrs.dto.JournalDto(a.txnReferenceNo, c.accountNo, c.accountName, d.description, a.currencyCode , a.currencyCode, a.txnDate, a.txnAmt, a.smsUserInfo, a.smsUserInfo)  "
        + " FROM TxnTransactionLogEntity a, TxnBalanceEntity b, SmsAccountEntity c, SmsNominalAcodeEntity d WHERE a.smsAccount = c.accountNo AND b.smsAccount = c.accountNo and b.smsNominalAcode = d.nominalAcodeId")
public Page<JournalDto> findJournalReportData(Pageable pageable);

}

【问题讨论】:

    标签: java spring spring-boot spring-data spring-data-jpa


    【解决方案1】:

    如果您想根据某些输入或值修改查询,您可以使用 CriteriaRestriction 类在运行时使用 API 构建您自己的查询,而不是将静态查询定义为注解。例如可以定义这个查询:

    @PersistenceContext
    private EntityManager entityManager;     
    
    public JournalDto findJournalReportData(){
        CriteriaBuilder builder = entityManager.getCriteriaBuilder();            
        CriteriaQuery<JournalDto > query = builder.createQuery(JournalDto.class);         
        Root<JournalDto> dto = query.from(JournalDto.class);
        Root<TxnBalanceEntity> txn = query.from(TxnBalanceEntity.class);
        SetJoin<TxnBalanceEntity, SmsAccountEntity> o = txn.join(SmsAccountEntity.accountNo);
    
     //..Rest of join statements
    
    }
    

    【讨论】:

      猜你喜欢
      • 2020-06-14
      • 2020-04-12
      • 2019-03-10
      • 1970-01-01
      • 2019-03-13
      • 2015-03-25
      • 2015-12-07
      • 2019-10-31
      • 2020-06-16
      相关资源
      最近更新 更多