Spring CrudRepository保存方法的自定义返回类型(动态投影)

时间:2019-04-25 16:22:56

标签: java spring spring-boot spring-data-jpa spring-boot-jpa

我想知道是否可以为Spring的CrudRepository保存方法定义自定义返回类型,如以下示例中的find查询方法所示:

    <T> Optional<T> findById(Long id, Class<T> type);

In the documentation我只找到了使用查询方法进行动态投影的示例。

我尝试了

    <T> T save(Foo entity, Class<T> type);

但出现以下错误:

java.lang.IllegalArgumentException: Failed to create query for method public abstract java.lang.Object com.xyz.myproject.persistence.dao.FooDAO.save(com.xyz.myproject.persistence.model.Foo,java.lang.Class)! No property save found for type Foo!

有什么想法可以使它正常工作吗?

1 个答案:

答案 0 :(得分:0)

我不这么认为,应该是Foo save(Foo entity);或来自文档

Example 30. Fragments overriding save(…)
interface CustomizedSave<T> {
  <S extends T> S save(S entity);
}

class CustomizedSaveImpl<T> implements CustomizedSave<T> {

  public <S extends T> S save(S entity) {
    // Your custom implementation
  }
}

https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#repositories.custom-implementations