当您可以定义返回任何类型的方法时,为什么Spring CrudePositories是泛化的?
假设我有两个JPA实体,当您可以定义返回任何类型的方法时,为什么Spring CrudePositories是泛化的?,spring,hibernate,spring-data,spring-data-jpa,jpql,Spring,Hibernate,Spring Data,Spring Data Jpa,Jpql,假设我有两个JPA实体,Fizz和Buzz,它们对应于数据库中的fizzes和buzzs表 是什么阻止我写这样的东西: public interface BuzzRepository extends CrudRepository<Buzz,Long> { @Query("FROM Fizz WHERE id = :id") public Fizz getFizzById(@Param('id') Long id); } 公共接口BuzzRepository扩展了Cr
Fizz
和Buzz
,它们对应于数据库中的fizzes
和buzzs
表
是什么阻止我写这样的东西:
public interface BuzzRepository extends CrudRepository<Buzz,Long> {
@Query("FROM Fizz WHERE id = :id")
public Fizz getFizzById(@Param('id') Long id);
}
公共接口BuzzRepository扩展了Crudepository{
@查询(“来自Fizz,其中id=:id”)
公共Fizz getFizzById(@Param('id')Long id);
}
也就是说,当我可以定义自己的方法来返回Fizz
、String
或任何我想要的东西时,泛化的crudepository
有什么意义
我这样问是因为我觉得我遗漏了一些关于
crudepositories
如何使用的基本意图 因为默认情况下,它将创建与实体一起工作的实现,而实体是用实体进行泛化的。例如,它将具有方法findAll()
,该方法将返回该类型的所有实体。FYI JPQL查询以SELECT{alias}
开始。忽略这一点,可移植性刚刚被抛弃了tanks@DN1(+1),但你所说的“可移植性刚刚被抛弃”是什么意思?什么之间的可移植性?!显然,没有它就不再是JPQL了,所以如果有人对不同的JPA提供者使用它,它将失败。传播这些东西意味着其他人也会复制它。又称不良行为,几乎没有好处