Hibernate 3.2.5中的@NamedNativeQuery中的Hibernate可调用属性抛出错误

时间:2016-08-04 12:07:28

标签: oracle hibernate hibernate-mapping

我可以知道为什么可调用不能在@NamedNativeQuery中的hibernate 3.2.5中工作,并且它会抛出编译错误。任何人都可以知道它为什么抛出错误,请让我知道它将支持哪个版本。 我需要使用@NamedNativeQuery从Hibernate实体类调用oracle存储过程。请帮忙。

1 个答案:

答案 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。