当前位置: 首页 > 知识库问答 >
问题:

有没有办法在没有实体的情况下使用“@过程”注释?

颛孙天宇
2023-03-14

所以我想要一个“Void Repository”,通过它可以访问不一定在实体上操作的存储过程。

@Repository
public interface StoredProceduresRepository extends CrudRepository<Void, Long> {

    @Procedure("my_answer_giver")
    String getMyAnswer(@Param("input") String input);
}

但这当然不起作用,因为CrudRepository期望Void是一个实体。

有没有一种方法可以使用@过程注释而无需创建虚拟实体,或者我是否坚持使用使用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;
    }
}

共有1个答案

端木宏才
2023-03-14

如果可以的话,您可以使用您拥有的任何实体来代替此空。在那里提供的实体应该无关紧要。

public interface StoredProceduresRepository extends JpaRepository<SomeUnrelatedEntity, Long> {

        @Procedure("my_answer_giver")
        String getMyAnswer(@Param("input") String input);

}

我一直在数据库视图中这样使用它。

 类似资料:
  • 问题内容: 我正在开发一个简单的Webapp,它将域模型公开为RESTful资源。我打算将JPA2(Hibernate)与SpringMVC REST支持一起使用。 在将Hibernate实体编组为XML / JSON时,如果该实体分离,它将为惰性子项关联抛出LazyLoadingException。如果实体仍然连接到Hibernate Session,它将几乎加载整个数据库。 我尝试使用推土机C

  • 我有以下2个实体: 它们有共享字段/列,例如:等,但是每个主键id字段的名称不同,例如有和 有没有一种方法可以创建一个基本实体超类来保存这些通用的

  • 我再次编写另一个银行系统插件,但这次是使用ATM。我正在尝试弄清楚如何在单击该选项后获得玩家聊天输入,以防止单击100次以在银行帐户上存入50,000美元。 我正在用Paper-Spigot 1.14.4编写这个插件,我尝试了以下步骤: 作为一个单独的类,仅当我向插件管理器注册事件时才激活: 使用 get 和 set-method创建一个 变量 ,并在需要时在该方法中调用它。 我当前的方法: 获取

  • 问题内容: 使用JSch,有没有办法在不执行ls并循环浏览文件以查找名称匹配的情况下,确定是否存在远程文件? 谢谢 问题答案: (这是如果您使用的是库的SFTP部分,这是我没有考虑的假设。) 我以为它会接受文件名。我目前无法检查。 如果不是这样,则无需手动进行迭代。您可以使用选择器变体:

  • 是否可以在没有实体的情况下使用JpaRepository?在这种情况下,将其替换为DTO。 如下示例所示 这种情况有替代方案吗? 注意:DTO已经映射,但我不想创建视图来将此DTO转换为实体。 我已经验证了这个主题,但没有重大进展,请使用无实体的JpaRepository交互样式 我在试这个 接口- 公共接口BffDTOInterface2{ } 我有这个错误

  • 我看到的所有解决方案都需要使用。但是,我想在Eclipse之外的单个文件上使用CDT解析器。那有什么办法吗?