ORM如何映射到接口?

时间:2018-10-20 10:53:49

标签: java spring spring-data-jpa

这些天我正在学习JPA投影!
我无法理解某些奇怪的事情。

以下是我的问题

Spring Data JPA存储库

public interface PersonRepository extends JpaRepository<Person, Serializable> {

  Collection<NameAgeOnly> findByAgeGreaterThan(int age);
}

接口(没有实现此接口的Clazz)

public interface NameAgeOnly {
  String getName();

  String getAge();
}

RepositoryTest

public class RepositoryTest {
  List<CountByAddress> countByAddressList = personRepository.getCityNameAndPersonCount();
  debug.log(countByAddressList.get(0).getName());
}

countByAddressList.get(0).getName 如何工作?没有实现NameAgeOnly的类?

接口是否有任何默认类? 谁能解释如何将ORM映射到Interface Not Class?

谢谢:)

1 个答案:

答案 0 :(得分:2)

The documentation对此进行了解释:

  

查询执行引擎在运行时为返回的每个元素创建该接口的代理实例,并将对公开方法的调用转发给目标对象。