Hibernate CRUDEPositories-@Query执行前的流程查询参数
这是一个简单的界面Hibernate CRUDEPositories-@Query执行前的流程查询参数,hibernate,jpa,spring-boot,Hibernate,Jpa,Spring Boot,这是一个简单的界面 public interface HPCrudRepository<T,ID extends Serializable>{ @Query("<how to write query here") public List getThis(String somevalue); } public interface HPCrudRepositoryCustom { public void customMethod(); } 公共接口H
public interface HPCrudRepository<T,ID extends Serializable>{
@Query("<how to write query here")
public List getThis(String somevalue);
}
public interface HPCrudRepositoryCustom {
public void customMethod();
}
公共接口HPCRUDepository{
@Query(“不完全是您正在寻找的解决方案,但您可以将自定义添加到spring数据存储库中
首先创建一个单独的接口
public interface HPCrudRepository<T,ID extends Serializable>{
@Query("<how to write query here")
public List getThis(String somevalue);
}
public interface HPCrudRepositoryCustom {
public void customMethod();
}
然后提供执行处理的实现
public class HPCrudRepositoryImpl implements HPCrudRepositoryCustom {
@Autowired
HPCrudRepository hpCrudRepository;
public void customMethod(String somevalue) {
// process someValue
...
hpCrudRepository.getThis(processedOutcome);
}
}
您还可以查看一些示例,不完全是您正在寻找的解决方案,但您可以将自定义添加到spring数据存储库中
首先创建一个单独的接口
public interface HPCrudRepository<T,ID extends Serializable>{
@Query("<how to write query here")
public List getThis(String somevalue);
}
public interface HPCrudRepositoryCustom {
public void customMethod();
}
然后提供执行处理的实现
public class HPCrudRepositoryImpl implements HPCrudRepositoryCustom {
@Autowired
HPCrudRepository hpCrudRepository;
public void customMethod(String somevalue) {
// process someValue
...
hpCrudRepository.getThis(processedOutcome);
}
}
您也可以查看一些示例,我认为没有一个解决方案可以满足您的需求。但是如果您不想创建自己的实现类,您可以直接在接口中进行预处理
在Java8中,添加了default
关键字,使功能能够在接口方法中编写逻辑
因此,您可以创建一个预处理方法,然后调用接口的正确查询方法
public interface UserRepository extends JpaRepository<User, Long>{
@Query("Select u from User u where u.name = :s")
User findUserByName(@Param("s") String s);
default User findUserByNamePreprocessing(String s) {
//do you reprocessing stuff here..
return this.findUserByName(s);
}
}
我认为对于小型和简单的预处理需求来说,这是一个很好的简单解决方案。如果变得复杂,请创建一个实现类。我认为没有一个解决方案可以满足您的需求。但是如果您不想创建自己的实现类,您可以直接在界面中进行预处理
在Java8中,添加了default
关键字,使功能能够在接口方法中编写逻辑
因此,您可以创建一个预处理方法,然后调用接口的正确查询方法
public interface UserRepository extends JpaRepository<User, Long>{
@Query("Select u from User u where u.name = :s")
User findUserByName(@Param("s") String s);
default User findUserByNamePreprocessing(String s) {
//do you reprocessing stuff here..
return this.findUserByName(s);
}
}
我认为这是一个很好且简单的解决方案,适用于小而简单的预处理需求。如果变得复杂,请创建一个实现类。不认为这是可能的。你必须编写接口的实现。不认为这是可能的。你必须编写接口的实现。看起来很整洁,但不幸的是,我仅使用1.7。看起来不错,但不幸的是,我仅使用1.7。为什么我应该仅出于示例目的自动连接HPCRUDepository。您可以自动连接实体管理器并使用jpa api,也可以使用crud bean并使用默认操作。示例已编辑。为什么我应该仅出于示例目的自动连接HPCRUDepository。您可以它自动连接实体管理器并使用JPAAPI或CRUDbean并使用默认操作。示例已编辑。