Mongodb 中的投影未按预期工作
Projections in Mongodb not working as intended
按照 spring 数据 mongodb https://docs.spring.io/spring-data/mongodb/docs/current/reference/html/#projections 中的官方投影教程将得到
java.lang.IllegalArgumentException: Couldn't find PersistentEntity for
type class com.sun.proxy.$Proxy109!
对于 NamesOnly 投影:
interface NamesOnly {
String getFirstname();
String getLastname();
}
@RepositoryRestResource
interface PersonRepository extends Repository<Person, UUID> {
Collection<NamesOnly> findByLastname(@Param("lastName") String lastname);
}
这个例子可以运行吗?
您需要定义一个 @RestController class 并从控制器调用 findByLastname 存储库方法,例如:
@RestController
@RequestMapping("/api")
public class PersonController {
@Autowired
private PersonRepository personRepository;
@GetMapping(path = "/persons/findByLastname")
public Collection<NamesOnly> findByLastname(@Param("lastName") final String lastName) {
Collection<NamesOnly> result = personRepository.findByLastname(lastName);
return result;
}
}
按照 spring 数据 mongodb https://docs.spring.io/spring-data/mongodb/docs/current/reference/html/#projections 中的官方投影教程将得到
java.lang.IllegalArgumentException: Couldn't find PersistentEntity for type class com.sun.proxy.$Proxy109!
对于 NamesOnly 投影:
interface NamesOnly {
String getFirstname();
String getLastname();
}
@RepositoryRestResource
interface PersonRepository extends Repository<Person, UUID> {
Collection<NamesOnly> findByLastname(@Param("lastName") String lastname);
}
这个例子可以运行吗?
您需要定义一个 @RestController class 并从控制器调用 findByLastname 存储库方法,例如:
@RestController
@RequestMapping("/api")
public class PersonController {
@Autowired
private PersonRepository personRepository;
@GetMapping(path = "/persons/findByLastname")
public Collection<NamesOnly> findByLastname(@Param("lastName") final String lastName) {
Collection<NamesOnly> result = personRepository.findByLastname(lastName);
return result;
}
}