混合参数策略 - 仅使用命名策略、位置策略或 JPA 序数策略之一

问题描述 投票:0回答:1
我正在从 Oracle 数据库调用函数并面临此异常:

org.hibernate.engine.query.ParameterRecognitionException:混合参数策略 - 仅使用命名、位置或 JPA 序数策略之一

这是我的

User.java 实体。

@Entity @Table(name = "users", schema = "myschema") @javax.persistence.NamedNativeQuery(name = "getPass", query = "{? call = his.get_abc(:mrno)}", resultClass = User.class, hints = { @javax.persistence.QueryHint(name = "org.hibernate.callable", value = "true") }) public class User { @Id @Column(name = "USERID", nullable = false) private String userid; @Column(name = "MRNO") private String mrno; private String username; private String password; private String fullName; // Getters and Setters are written. }

这就是我从我的服务类中调用此函数的方式。

public boolean validateUser(String mrno, String password) { String completeMrno = utils.getMedicalRecordNumber(mrno); EntityManagerFactory factory = Persistence.createEntityManagerFactory("his-dev"); EntityManager entityManager = factory.createEntityManager(); Query query = entityManager.createNamedQuery("getPass"); // <- this line is raising exception. query.setParameter("mrno",completeMrno); List<?> results = query.getResultList(); }

那么,为了调用返回字符串的 Oracle 函数,需要进行哪些更改。

谢谢。如果需要更多信息,请告诉我。

spring hibernate spring-boot jpa-2.0
1个回答
0
投票
下面是如何使用 JPA 调用该函数的示例:

Object result = entityManager.createNativeQuery("SELECT his.get_abc(:mrno) FROM DUAL") .setParameter("mrno", completeMrno) .getSingleResult(); String value = new String(result);
    
© www.soinside.com 2019 - 2024. All rights reserved.