[英]Any way to use the `@Procedure` annotation without an entity?
所以我想要一个“Void-Repository”,通过它可以访问不一定对实体进行操作的存储过程。
@Repository
public interface StoredProceduresRepository extends CrudRepository<Void, Long> {
@Procedure("my_answer_giver")
String getMyAnswer(@Param("input") String input);
}
但这当然行不通,因为CrudRepository
期望Void
是一个实体。
有没有办法使用@Procedure
注释而不必创建虚拟实体,或者我是否坚持使用EntityManager
通过准备好的语句进行查询的已实现类?
因为老实说,这很糟糕:
@Repository
public class StoredProceduresRepository {
@PersistenceContext
EntityManager em;
public String getMyAnswer(String input) {
Query myAnswerGiver = em
.createStoredProcedureQuery("my_answer_giver")
.registerStoredProcedureParameter("input", String.class, ParameterMode.IN)
.setParameter("input", input);
Object result = ((Object[]) myAnswerGiver.getSingleResult())[0];
return (String) result;
}
}
如果对你来说没问题,你可以使用你拥有的任何 Entity 来代替这个Void
。 在那里提供的实体应该无关紧要。
public interface StoredProceduresRepository extends JpaRepository<SomeUnrelatedEntity, Long> {
@Procedure("my_answer_giver")
String getMyAnswer(@Param("input") String input);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.