`
y806839048
  • 浏览: 1127247 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

jpa使用 at least one user library must be selected问题

    博客分类:
  • jpa
jpa 
阅读更多

at least one user library must be selected实际就是建立一个目录,导入三个包即可

①、 eclipselink.jar

②、javax.persistence.source_2.1.0.v201304241213.jar

③、javax.persistence_2.1.0.v201304241213.jar

(注:本系列笔记是在学习尚硅谷JPA课程的时候写下的,结合课程内容和自我理解,方便自己以后进行复习)

一、在创建JPA之前看看什么是JPA

1、Java Persistence API:用于对象持久化的 API

2、Java EE 5.0 平台标准的 ORM 规范,使得应用程序以统一的方式访问持久层

3、结合下面两幅图片进行理解:

JPA功能示意图:

Figure 1.1

JDBC功能示意图:

Figure 1.2

4、JPA和Hibernate的关系

JPA 是 hibernate 的一个抽象(就像JDBC和JDBC驱动的关系):

——JPA 是规范: JPA 本质上就是一种 ORM 规范,不是ORM 框架 —— 因为 JPA 并未提供 ORM 实现,它只是制订了一些规范,提供了一些编程的 API 接口,但具体实现则由 ORM 厂商提供实现

——Hibernate 是实现: Hibernate 除了作为 ORM 框架之外,它也是一种 JPA 实现

从功能上来说, JPA 是 Hibernate 功能的一个子集

二、创建JPA工程之前需要解决一个问题:at least one user library must be selected

问题描述:在Workspace中右键,new → JPA Project,选择JAP version为2.0。此时,向导中的Finish是灰色的,不能够点击完成。没办法,只好点击Next看看,一路Next下去看到如下图Figure 2.1所示这样一个问题:at least one user library must be selected。

Figure 2.1

没有办法创建JAP工程,只好网上搜索,找到一篇歪果仁写的一篇博文,很好的解决了我这个问题:

http://www.javabeat.net/eclipselink-jpa-installation-configuration/

下面将博文要点整理成如下中文:

这篇文章将向你介绍如何安装和使用EclipseLink-JPA:

1、安装EclipseLink JAR 文件

①、 eclipselink.jar

②、javax.persistence.source_2.1.0.v201304241213.jar

③、javax.persistence_2.1.0.v201304241213.jar

  • 将下载好的EclipseLink 2.5.2压缩包解压到任何你想用于完成安装的文件夹中。我将文件解压到 “.\workspace\libraries\EclipseLink 2.5.2” 文件夹下。

2、在Eclipse IDE中设置 JPA Facet

首先在Eclipse中创建一个动态web工程,为我们后续添加 JPA facet 作准备。步骤如下:

①、打开 Eclipse IDE

②、创建一个动态的Web工程

③、在刚刚创建好的工程上点击右键,选择properties

④、在左侧那一列中点击 “Project Facets”

⑤、然后在右侧选中 JPA 选项,同时选择 JPA version 为2.0。如下图Figure 2.2所示:

Figure 2.2

这里有一个要注意的,因为有后续的很多设置要完成,所以在选择JPA和Version以后不能直接点击OK,而是要点击上图中下面部分标注的“Further configuration ...”链接来进行后续配置。这个操作将会打开一个新的对话框用于配置JPA Facet。

3、添加 JPA Facet

新弹开的对话框如下图Figure 2.3所示。用户可以在这个对话框中添加必须的库来实现JPA。

Figure 2.3

①、对话框上端的platform默认情况下是“Generic 2.0”,我们可以依据我们自己下载的EclipseLink版本来进行修改。我下载的是2.5.2版本,所以如Figure 2.3所示选择platform为EclipseLink 2.4.x/2.5.x版本

②、JPA implementation菜单不需要做任何修改。“User Library” type将会允许用户添加JPA库

③、点击右侧的“Manager Libraries”。除此之外,另外一个实现方法就是点击“Download Library”来进行下载库,但是这里下载实在是太慢,所以不使用它。

④、点击“Manager Libraries”以后会弹出一个对话框,在新的对话框中点击“New”。

⑤、“New”以后又会弹出一个对话框,要我们填写库的名字,我填写为“EclipseLink 2.5.2”。点击OK。

到目前为止,我们已经做好了添加jar包的前期准备。接下来就是添加上面“1、安装EclipseLink JAR 文件”这一步中提到的那三个jar包了。到目前的效果图如下Figure 2.4:

Figure 2.4

4、配置Library

配置Library需要我们添加JPA实现所必须的jar包。按照下面的步骤来完成配置:

①、点击“Add External JARs...”(也就是Figure 2.4图中红色框中的按钮)

②、添加 eclipselink.jar,它位于“.\workspace\libraries\EclipseLink 2.5.2\jlib”文件夹下面

③、添加 “.\workspace\libraries\EclipseLink 2.5.2\jlib\jpa”文件夹下 javax.persistence.* 开头的jar包(也就是前面说的后两个jar包)。如Figure 2.5所示

Figure 2.5

④、点击下端的OK按钮,会关闭添加library的对话框。

⑤、但是,为了避免JPA Facet报“At least one user library must be selected”这个错误。我们选择刚刚生成的library

⑥、点击OK。

到现在为止,前面提到的At least one user library must be selected错误已经得到了解决。到这里我们再回头去创建一个JPA工程就没有什么问题了。但是,歪果仁的这篇文章的目的是为了在动态Web工程中创建一个JPA环境。

这个是很有必要的,想想也是,现在单纯为了学习建了一个JPA工程,以后做Web工程的时候就需要创建一个动态Web工程了。

而且,后面的两个步骤还是挺有意思的,所以,这里是插叙,下面继续翻译歪果仁的文章。

到现在为止我们创建的动态web工程已经能够使用JPA了。但是,JPA是一个和关系型数据库相联系的持久化服务。所以,接下来我们就需要创建一个数据库连接

5、创建数据库链接(新意在于可以在配置的同时完成链接的测试工作)

一旦你创建完成了一个user library,接下来的工作就是创建一个数据库连接。最后一个对话框应该如Figure 2.6所示:

Figure 2.6

为了建立数据库的链接,按照以下步骤进行:

①、点击“Add Connection...”超链接(Figure 2.6中有标注)

②、Connection Profile 对话框将会弹出

③、选择工程中在对话框中选择工程使用的数据库种类。本教程中假设你使用的是MySQL数据库。

④、修改链接的名字,点击Next

⑤、填写“Specify a Driver and Connection Details”表单。在最初的时候可能弹出的对话框中没有驱动可以选择,这个时候我们需要手动的添加相关驱动,步骤如Figure 2.7和Figure2.8所示:

Figure 2.7

Figure2.8

点击上面的Figure 2.8中的OK以后,新的driver就添加完成了。随后就是在Figure 2.9中修改数据库名,填写用户名和密码,然后点击“Test Connection”测试数据库连接是否成功:

Figure 2.9

有意思的是,测试通过会弹出一个 ping successed! 提示框,如Figure 2.10所示:

Figure 2.10

⑥、在第⑤步的末尾,我们已经为JPA工程准备好了数据库连接

⑦、点击Figure 2.9中的finish按钮

⑧、点击finish以后对话框将会关闭,所以要确定连接已经被选中

⑨、点击,OK关闭Further configuration dialog。继续点击OK关闭project facets

现在,你已经创建完成了一个新的动态web工程,同时为它配置好了JPA环境。在eclipse左侧的导航栏里面你可以在src下看见一个META-INF文件夹了,该文件夹下面有一个persistence.xml文件。

6、配置persistence.xml文件

如果你按照步骤进行到这里了,而且所有步骤都成功操作了。现在是时候“编辑”persistence.xml文件的时候了,这个文件将会帮助我们连接我们的数据库。

为了配置persistence.xml文件,你需要双击打开它。它会在单独的一个xml文件编辑器中打开,在这个编辑器的底端会有很多的标签。现在我们按照以下的步骤完成persistence.xml文件的配置工作:

①、导航到Connection标签

②、将transaction type选择为“Resource Local”。这个改变将会激活EclipseLink connection pool。

③、点击“populate from connection”。见Figure 2.11

④、选择之前配置好的链接。见Figure 2.12

⑥、用 Ctrl + s 来保存文件。见Figure 2.13

⑦、导航到Source标签。你将会看到用于数据库连接的最小配置。

Figure 2.11

Figure 2.12

Figure 2.13

看看xml中的源码如下:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0"
	xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
	<persistence-unit name="a" transaction-type="RESOURCE_LOCAL">
		<properties>
			<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/jpa"/>
			<property name="javax.persistence.jdbc.user" value="root"/>
			<property name="javax.persistence.jdbc.password" value="tiger123"/>
			<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
		</properties>
	</persistence-unit>
</persistence>
分享到:
评论

相关推荐

    springboot整合mybatis整合jpa使用entityManger

    在本文中,我们将深入探讨如何在Spring Boot项目中整合MyBatis、JPA,并使用EntityManager进行数据访问。同时,我们还将介绍如何集成Redis缓存服务,以及如何对接微信支付和支付宝支付接口,以实现全面的支付功能。 ...

    jpa例子jpajpa

    **Java Persistence API (JPA)** 是Java平台上的一个标准,用于管理关系数据库中的对象-关系映射(ORM)。它提供了一种方式,让开发者可以用面向对象的编程模型来操作数据库,而无需直接编写SQL语句。JPA允许你在...

    Apache OpenJPA 2.1 User's Guide

    该文档提供了关于 JPA 标准的概述以及如何使用 OpenJPA 的技术细节。OpenJPA 参考指南包含了关于 OpenJPA 各个方面的详尽文档,包括许多高级功能和定制机会。 #### 二、法律条款 文档中提到了一些法律相关的章节,...

    jpa使用说明(English)

    ### JPA 使用说明 #### 一、引言与背景 在企业级应用开发中,管理关系型数据库的数据是一项核心任务。传统的做法是使用 JDBC(Java Database Connectivity)来操作数据库。虽然 JDBC 支持大量数据的处理,能确保...

    spring 使用 Jpa的笔记

    ### Spring 使用 JPA 的知识点详解 #### 一、Spring与JPA简介 Spring框架与Java Persistence API (JPA)的结合使用是当前企业级应用开发中的常见实践之一。Spring为JPA提供了很好的集成支持,使得开发者能够更加...

    JPA使用教程

    spring-data-jpa psf文档,全面的jpa使用教程,提供全面api操作说明

    SpringMVC+JPA使用注入的方式环境搭建

    SpringMVC+JPA使用注入的方式环境搭建

    Springboot集成spring-data-jpa增删查改使用ajax数据交互

    在开发Web应用时,Spring Boot和Spring Data JPA是常用的技术框架,它们简化了数据库操作和前后端交互。本教程将详细介绍如何在Spring Boot项目中集成Spring Data JPA,实现CRUD(创建、读取、更新、删除)操作,并...

    JPA构造器的使用样例

    当我们调用`findUserProfilesByUsername`方法时,JPA会执行这个查询,并使用查询结果创建`UserProfile`对象的列表。这种方式使我们能够将数据库查询的结果直接转换为业务对象,简化了数据处理的逻辑。 此外,JPA...

    JPA Demo 简单的了解下jpa

    **JPA(Java Persistence API)简介** Java Persistence API(JPA)是Java平台上的一个标准,用于管理和持久化Java对象到关系数据库。它是Java EE和Java SE环境中处理对象关系映射(ORM)的一种规范,旨在简化...

    SpringMVC3.2+JPA使用注解的方式环境搭建

    ### SpringMVC3.2与JPA结合使用注解方式的环境搭建详解 在现代的Java Web开发中,SpringMVC框架与JPA(Java Persistence API)的结合使用已成为构建企业级应用的标准模式之一。SpringMVC负责处理前端请求与后端业务...

    JPA映射关系详解javax JPA JPA映射关系 JPA映射

    本文将详细介绍 JPA 中四种常见的映射关系:一对一(One-to-One)、一对多(One-to-Many)、多对一(Many-to-One)以及多对多(Many-to-Many)。 #### 1. OneToOne 关系建立 一对一关系是指两个实体之间的关系,...

    JPA视频教程_使用jpa映射单个实体对象

    通过学习本教程,你将掌握如何使用JPA的注解来定义实体、映射字段和关系,并了解如何在Spring框架中配置和使用JPA进行数据操作。这将帮助你在实际项目中更高效地处理数据库交互,降低业务逻辑和数据访问层的耦合。

    spring data jpa 教程

    通过实现 JpaRepository 接口,开发者可以得到一系列的预定义方法,例如保存(save)、查询所有(findAll)、根据 ID 查找(findOne)等。此外,JpaRepository 还提供了分页(pageable)和排序(sort)的功能,极大...

    spring boot与cassandra集成,使用JPA方式。

    在本文中,我们将深入探讨如何将Spring Boot框架与Cassandra数据库集成,并利用Java Persistence API (JPA) 进行数据操作。Spring Boot以其简洁的配置和开箱即用的特性,已经成为Java开发中的首选框架之一。而...

    Spring-data-jpa常用教程.pdf

    Spring-data-jpa 的目标是利用 Spring 的强大功能来进一步简化 JPA 的使用。它不仅提供了简单的 CRUD 操作,还支持更复杂的查询、分页、排序等功能,并且与 Spring 框架无缝集成,使得开发者能够更加专注于业务逻辑...

    JPA使用手册+API+JAR

    此JAR文件可能包含了EJB 3.0对JPA的实现,允许开发者在不支持JPA的旧环境中使用JPA的功能。 “JPA_Basic.pdf”很可能是一个关于JPA基础的教程或参考手册,涵盖了JPA的关键特性和用法。它可能详细介绍了如何定义实体...

    springboot利用jpa连接hibernate

    在IT行业中,Spring Boot、Hibernate和JPA是Java开发领域中的关键组件,它们极大地简化了企业级应用的构建。本文将深入探讨如何在Spring Boot项目中利用JPA(Java Persistence API)来连接Hibernate,实现数据库操作...

    Springboot中使用JPA操作数据库

    接下来,定义一个实体类,例如`User.java`,并使用`@Entity`注解标记为JPA实体: ```java @Entity public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private ...

Global site tag (gtag.js) - Google Analytics