And*_*ili 4 java spring jpa spring-data spring-data-jpa
我不是很喜欢Hibernate和Spring Data JPA,我有以下疑问.
我有这个方法签名正确执行查询:
@Repository
public interface AccomodationMediaDAO extends JpaRepository<AccomodationMedia, Long> {
AccomodationMedia findByIdAccomodationAndIsMaster(Long accomodationId, boolean isMaster);
}
Run Code Online (Sandbox Code Playgroud)
它找到(在AccomodationMedia实体类映射的表上)具有名为idAccomodation的字段的单个记录,该字段设置有由accomodationId方法参数表示的Long值,并且字段isMaster由isMaster布尔值重新呈现.
它工作正常,但我的"问题"是这样做我总是显式传递布尔值isMaster参数的值.
此参数必须始终设置为true,所以我尝试以这种方式更改以前的方法签名:
AccomodationMedia findByIdAccomodationAndIsMaster(Long accomodationId, true);
Run Code Online (Sandbox Code Playgroud)
但IntelliJ显示错误:标识符或预期类型.
为什么?我可以设置必须将此参数的值显式设置为true布尔值吗?
如参考文档中所述,您只需使用IsTrue关键字:
AccomodationMedia findByIdAccomodationAndIsMasterIsTrue(Long accomodationId);
Run Code Online (Sandbox Code Playgroud)
如果您使用的是 Java 8,您可以通过实现重载它default:
public interface AccomodationMediaDAO extends JpaRepository<AccomodationMedia, Long> {
AccomodationMedia findByIdAccomodationAndIsMaster(Long accomodationId, boolean isMaster);
default AccomodationMedia findByIdAccomodationAndIsMaster(Long accomodationId) {
return findByIdAccomodationAndIsMaster(accomodationId, true);
}
}
Run Code Online (Sandbox Code Playgroud)
但是您不能为方法参数提供默认值。例如看到这个问题。