【问题标题】:QuerydslPredicateExecutor not having save() methodQuerydslPredicateExecutor 没有 save() 方法
【发布时间】:2020-12-09 09:14:18
【问题描述】:

我曾尝试在我的项目中使用QuerydslJpaRepository,但它已被弃用,建议改用QuerydslPredicateExecutor。但是,QuerydslPredicateExecutor 没有 save() 方法,而 QuerydslJpaRepository 中存在该方法。

我该如何解决这个问题?

【问题讨论】:

    标签: jpa spring-data-jpa spring-data querydsl


    【解决方案1】:

    您的存储库不仅应扩展QueryDslPredicateExecutor,还应扩展包含save 方法(继承自CrudRepository)的JpaRepository

    public interface YourEntityRepository 
        extends JpaRepository<YourEntity, ID>, QueryDslPredicateExecutor<YourEntity> {
    }
    

    【讨论】:

    • 如果我的接口从 QueryDslPredicateExecutor 扩展,那么我的实现类中会出现 8 个错误,例如 -> 类型必须实现继承的抽象方法 QuerydslPredicateExecutor.findAll(OrderSpecifier>.. .) ...它适用于所有 finder、count 和 exits 方法。我不想那样做。有没有其他方法可以做到这一点?
    • 无需实现存储库。 Spring 为你实现它
    • 我需要一个实现类,因为我需要一些额外的方法。我已经使用组合在我的实现类中有 QueryDslPredicateExecutor 但它没有 save() 方法。
    • 您可以尝试使您的存储库实现从实现 JpaRepository 的 SimpleJpaRepository 扩展
    • 我的实现类已经从某个基类扩展而来。我可以使用组合在我的实现类中同时使用 QueryDslPredicateExecutor 和 SimpleJpaRepository,然后只使用 SimpleJpaRepository 进行 save() 操作吗?我不确定同一域对象的 2 个存储库是否会产生任何问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-22
    • 2020-03-29
    • 1970-01-01
    • 2012-07-31
    • 2015-08-18
    • 1970-01-01
    • 2021-02-24
    相关资源
    最近更新 更多