Я вызываю функцию из базы данных 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, которая возвращает строку.
Спасибо. Дайте мне знать, если потребуется дополнительная информация.