gpt4 book ai didi

java - 在同一存储库中创建 JPA 投影

转载 作者:行者123 更新时间:2023-12-02 09:40:14 24 4
gpt4 key购买 nike

我想创建这个 JPA 投影:

@Repository
public interface PaymentTransactionRepository extends JpaRepository<PaymentTransactions, Integer>, JpaSpecificationExecutor<PaymentTransactions> {

@Query(value = "SELECT count(id) as count, status, error_class, error_message, id FROM " +
" payment_transactions " +
" WHERE terminal_id = :id AND (created_at > :created_at) " List<PaymentTransactionsDeclineReasonsDTO> transaction_decline_reasons(@Param("id") Integer transaction_unique_id, @Param("created_at") LocalDateTime created_at);
}

基于类的投影 DTO:

@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder(toBuilder = true)
public class PaymentTransactionsDeclineReasonsDTO {

private Integer id;

private Integer count;

private String status;

private String error_class;

private String error_message;

}

但是我得到了异常(exception)

org.springframework.core.convert.ConverterNotFoundException: No converter found capable of converting from type [org.springframework.data.jpa.repository.query.AbstractJpaQuery$TupleConverter$TupleBackedMap] to type [org.plugin.service.PaymentTransactionsDeclineReasonsDTO]

你知道我该如何解决这个问题吗?我想我必须创建一个单独的存储库 extends JpaRepository<PaymentTransactionsDeclineReasonsDTO, Integer>

但我想使用相同的存储库,因为我有使用正确实体的查询。有什么解决办法吗?

最佳答案

您应该能够使用普通投影作为界面来完成此操作。 Here您可以找到有关如何设置基于界面的投影的好教程。基本上,您可以将 PaymentTransactionsDeclineReasonsDTO 转换为接口(interface),并声明您想要通过投影访问的 getter:

public interface PaymentTransactionsDeclineReasonsDTO {
int getId();
int getCount();
//... and so on
}

这样您仍然可以使用相同的存储库,但只能获取实际类的选定属性。

关于java - 在同一存储库中创建 JPA 投影,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57142574/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com