背景
数据表item
:
+---------+---------+--------+
| field | type | index |
+---------+---------+--------+
| id_item | INT | PK |
| name | VARCHAR | UNIQUE |
+---------+---------+--------+
ItemRepository.java
:
public interface ItemRepository extends CustomRepository<Item, Integer> {
public Item getByName(String name); // because of the unique index
}
CustomRepository.java
:
@NoRepositoryBean
public interface CustomRepository<E, PK extends Serializable> extends PagingAndSortingRepository<E, PK>, JpaSpecificationExecutor<E> {
// common methods
}
CustomRepositoryImpl.java
:
public class CustomRepositoryImpl<E, PK extends Serializable> extends SimpleJpaRepository<E, PK> implements CustomRepository<E, PK> {
// common methods implementations
}
问题
如您所见,没有实现 interface ItemRepository
。这意味着,该getByName
方法只有一个签名,永远不会在任何地方实现。但它有效。如何?
附言
对于持怀疑态度的人来说,使用 Eclipse,当Ctrl按住鼠标并将鼠标悬停在getByName
签名上时,单击Open Implementation
根本不会打开任何 JAVA 文件。