转载
在项目开发中用到了JPA规范,并在po类中使用了存储过程,这种资料在网上很容易找到,所以很快就跑通了,代码如下:
@Entity
@Table(name = "USER", schema = "MOBILE", uniqueConstraints = {
@UniqueConstraint(columnNames = { "LOGINID" }),
@UniqueConstraint(columnNames = { "USERACCOUNT" }) })
@NamedNativeQuery(name = "addUser", query = "{call addUser(:pPortalID,:ploginid,:ploginpasswd,:pSelfQuiz,:pSelfAnswer,:pUserEmail,:pUserAccount,:pUserPin)}", hints = { @QueryHint(name = "org.hibernate.callable", value = "true") }, resultClass = User.class)
public class User implements java.io.Serializable {
private static final long serialVersionUID = 5325039036880950119L;
private String userid;
private String loginid;
private String passwd;
//省略若干代码
}
但是后来却要求将addUser改成了函数,所以也要将po类中的调用修改。起初我以为很简单,数据库中的存储过程和函数差不多,不用修改直接调用即可。但是事实却不像我想得那样,错误百出,我上网查了很多资料,但是没有能给出答案的,后来才知道只要修改一个地方就可以获得想要的功能,郁闷!
下面是修改后的代码:
@Entity
@Table(name = "USER", schema = "MOBILE", uniqueConstraints = {
@UniqueConstraint(columnNames = { "LOGINID" }),
@UniqueConstraint(columnNames = { "USERACCOUNT" }) })
@NamedNativeQuery(name = "addUser", query = "{?=call addUser(:pPortalID,:ploginid,:ploginpasswd,:pSelfQuiz,:pSelfAnswer,:pUserEmail,:pUserAccount,:pUserPin)}", hints = { @QueryHint(name = "org.hibernate.callable", value = "true") }, resultClass = User.class)
public class User implements java.io.Serializable {
private static final long serialVersionUID = 5325039036880950119L;
private String userid;
private String loginid;
private String passwd;
//省略若干代码
}
请注意call addUser语句,存储过程是直接调用,而调用函数则是在前面加?=.这可是我几天几夜不休得出的结果,拿出来与大家分享,希望有需要的朋友不要走我的弯路!
分享到:
相关推荐
本篇主要探讨如何在EJB3与JPA环境中调用原生SQL查询以及如何创建和使用Oracle的存储过程。 1. EJB3与JPA调用原生SQL EJB3引入了JPA作为标准的数据持久化框架,允许开发者使用JPQL(Java Persistence Query ...
总之,Spring Data JPA 提供了一种简洁的方式来调用数据库的存储过程,使得在Java应用中使用存储过程变得直观和易于管理。通过定义Repository接口和注解,我们可以轻松地在业务逻辑中集成存储过程,而无需关心底层的...
在这个例子中,`myProcedure`是存储过程的名称,`param1`和`param2`是传递给存储过程的参数。`setParameter()`方法用来设置这些参数的值。 4. **返回结果**: 如果存储过程有返回值,你可以通过设置查询结果类型...
在EJB3.0中,开发人员可以直接通过EntityManager来操作数据库,包括调用存储过程。存储过程是数据库中预编译的SQL语句集合,可以提高性能、封装复杂逻辑以及提供更好的安全性。 调用存储过程的方法主要依赖于...
Java中调用SQL Server存储过程是一项常见的任务,特别是在开发企业级应用时,因为存储过程能够封装复杂的数据库逻辑,提高性能并降低网络流量。本篇文章详细介绍了如何通过Java调用SQL Server存储过程,涵盖了几种...
SpringData框架中使用的JPA工具类.模板代码,解决实体管理器工厂的浪费资源和耗时问题.第一次访问getEntityManager方法:经过静态代码块创建一个factory对象,再调用方法创建一个EntityManager对象,第二次方法...
7. **存储过程**:Spring Data JPA也支持调用数据库存储过程,并将其结果转换为Java对象。 8. **JPA实体**:学习如何定义实体类,使用`@Entity`, `@Table`, `@Id`, `@GeneratedValue`等注解,以及如何处理关系(如`...
JPA允许你在Java应用程序中以对象的形式处理数据,这些对象可以自动转换为数据库中的记录。 在JPA的例子中,我们通常会涉及以下几个核心概念: 1. **实体(Entity)**: 实体是与数据库表相对应的Java类。它们通常...
它简化了在Java应用程序中存储、检索和管理数据的过程,是Enterprise JavaBeans(EJB)的一部分,也是Spring框架中的一个重要组件。JPA通过提供一组接口和注解,允许开发者以声明式的方式处理数据操作,从而减少了对...
**Spring Data JPA** 是一个基于 **Java** 的开源框架,它是 **Spring Framework** 的一个模块,主要用于简化 **Java Persistence...在学习过程中,结合实际编程实践,能更好地理解和掌握 Spring Data JPA 的强大功能。
在本文中,我们将深入探讨如何使用Spring Boot与Java Persistence API (JPA) 实现批量存储操作。Spring Boot简化了设置和配置,而JPA作为Java的ORM(对象关系映射)框架,允许开发者以面向对象的方式操作数据库。...
本示例"springboot同时整合JPA和mybatis的demo"旨在演示如何在一个项目中同时使用Spring Boot与两种ORM(对象关系映射)框架:JPA(Java Persistence API)和MyBatis。这为我们提供了更大的灵活性,可以根据不同的...
我们可以使用存储过程或者在Java代码中处理。例如,可以使用`findAllByOrderByParentIdAsc()`获取所有节点,然后在内存中遍历和构造树形结构。 最后,业务逻辑中调用`NodeRepository`的方法来操作树形结构。例如,...
8. **Pagination and Sorting**:Spring Data JPA支持分页和排序功能,只需要在Repository接口的方法中传入Pageable参数,就可以实现数据的分页和排序。 9. **Integration with Spring Boot**:Spring JPA与Spring ...
在JPA和Hibernate中,可以直接返回查询结果集,但如果需要定制化包装,可以自定义`QueryResult`类来实现。 综上所述,`JPA(hibernate) Dao 和 DaoSupport`涉及到Java持久化技术,主要关注如何通过面向对象的方式...
文档还包含了详细的参考部分,如 JPA 存储库的配置、合并持久性单元、CDI 集成等,以及附录中的名称空间引用、查询关键词、常见问题和术语表。 总的来说,Spring Data JPA 1.7.0.RELEASE 文档是深入了解和使用该...
Spring Boot简化了Spring应用程序的创建和配置过程,而JPA作为Java的ORM(对象关系映射)标准,允许开发者以面向对象的方式操作数据库。本文将深入探讨如何使用JPA和Spring Boot结合,实现代码自动生成工具,提高...
JPA是一个Java社区规范(Java Community Process JSR 220),用于在Java EE和Java SE环境中管理对象和关系数据库之间的映射,以及管理数据库中的数据持久化操作。JPA为对象/关系映射(ORM)提供了标准化的方法,可以...