问题描述
我正在尝试执行没有任何IN参数的Oracle函数:
FUNCTION SELECT_USER RETURN SYS_REFCURSOR IS
refCurRetour SYS_REFCURSOR;
BEGIN
OPEN refCurRetour FOR
SELECT ID_RH,NOM,PRENOM,MAIL FROM ES_UTILISATEUR;
RETURN refCurRetour;
EXCEPTION
WHEN NO_DATA_FOUND THEN
NULL;
WHEN OTHERS THEN
RAISE;
END SELECT_USER;
我定义的实体:
@Entity
@NamedNativeQuery(
name = "selectUser",query = "{? = call SELECT_USER()}",resultClass = UserResult.class
)
public class UserResult {
@Id
@Column(name = "ID_RH")
private String idrh;
@Column(name = "NOM")
private String nom;
@Column(name = "PRENOM")
private String prenom;
@Column(name = "MAIL")
private String mail;
}
并执行查询:
public List<UserResult> selectUser() {
TypedQuery<UserResult> q = em.createNamedQuery("selectUser",UserResult.class);
return q.getResultList();
}
问题是我收到有关未定义参数的错误:
java.sql.SQLException: Missing IN or OUT parameter at index :: 1
我在做什么错了?
解决方法
似乎我正在使用@NamedNativeQuery
软件包中的javax.persistence
。
当我将其更改为org.hibernate.annotations
(+添加calleble = true
)时,问题已解决。