我可以知道为什么可调用不能在@NamedNativeQuery中的hibernate 3.2.5中工作,并且它会抛出编译错误。任何人都可以知道它为什么抛出错误,请让我知道它将支持哪个版本。 我需要使用@NamedNativeQuery从Hibernate实体类调用oracle存储过程。请帮忙。
答案 0 :(得分:0)
我实施如下,一切正常。
Student.class
@Entity
@NamedNativeQueries(
@NamedNativeQuery(
name = Student.UPDATE,
query = "CALL updateStudent(:studentId, :studentName)",
)
)
public class Student extends ABaseEntity {
public static final String UPDATE = "Student.update";
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
updateStudent程序
CREATE OR REPLACE PROCEDURE UPDATESTUDENT
(
studentId IN NUMBER
, studentName IN VARCHAR2
) AS
BEGIN
Update student set name = studentName where id = studentId;
END UPDATESTUDENT;
StudentDao
@Stateless
public class StudentDao {
@PersistenceContext(name = "tngo")
private EntityManager entityManager;
public void updateStudent(Long id, String name){
Query query = entityManager.createNamedQuery(Student.UPDATE);
query.setParameter("studentId", id);
query.setParameter("studentName", name);
query.executeUpdate();
}
}
我使用jpa与hibernate提供程序版本5.1.0.Final。如果要从procedure返回结果集,可以在@NamedNativeQuery注释中提供resultClass和resultSetMapping。