【问题标题】:Why are Spring CrudRepositories genericized when you can define methods that return any type?当您可以定义返回任何类型的方法时,为什么要泛化 Spring CrudRepository?
【发布时间】:2018-02-01 17:12:32
【问题描述】:

假设我有两个 JPA 实体 FizzBuzz 对应于数据库中的 fizzesbuzzes 表。

是什么阻止我写这样的东西:

public interface BuzzRepository extends CrudRepository<Buzz,Long> {
    @Query("FROM Fizz WHERE id = :id")
    public Fizz getFizzById(@Param('id') Long id);
}

意思是,当我可以定义自己的方法来返回FizzString 或我想要的任何其他东西时,泛型化CrudRepository&lt;Buzz,Long&gt; 的意义何在?

我之所以这么问,是因为我觉得我遗漏了一些关于如何使用 CrudRepositories 的基本意图。

【问题讨论】:

  • 仅供参考 JPQL 查询以 SELECT {alias} 开头。忽略这一点,便携性就被抛弃了
  • 谢谢@DN1 (+1) 但是你所说的“便携性刚刚被抛弃”是什么意思?什么之间的可移植性?!
  • 显然没有它就不再是 JPQL,所以如果有人曾经对不同的 JPA 提供者使用它,它就会失败。传播这些东西意味着其他人也复制它。又名不好的做法,几乎没有好处

标签: spring hibernate spring-data spring-data-jpa jpql


【解决方案1】:

因为默认情况下,它将创建与实体一起工作的实现,它被生成。例如,它将具有方法findAll(),它将返回该类型的所有实体。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    • 2019-02-14
    相关资源
    最近更新 更多