您的位置:首页 > 编程语言 > Java开发

JPA---Eclipselink JPA(JPA规范的实现者)

2019-07-28 22:30 211 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/weixin_44428051/article/details/97620540

技术选型: idea + eclipselinkjpa + mysql8.0.13
1.创建idea maven工程,添加依赖:

<?xml version="1.0" encoding="UTF-8"?>


4.0.0
com.atsico
eclipselinkjpa
1.0-SNAPSHOT

<repositories>
<repository>
<id>oss.sonatype.org</id>
<name>OSS Sonatype Staging</name>
<url>https://oss.sonatype.org/content/groups/staging</url>
</repository>
</repositories>

<dependencies>
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>eclipselink</artifactId>
<version>2.5.0-RC1</version>
<exclusions>
<exclusion>
<groupId>org.eclipse.persistence</groupId>
<artifactId>commonj.sdo</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.13</version>
</dependency>
</dependencies>

2.配置persistence.xml(注意该配置文件路径存放的位置)

<?xml version="1.0" encoding="UTF-8"?> org.eclipse.persistence.jpa.PersistenceProvider com.atsico.pojo.Employee com.atsico.pojo.Address
<properties>
<!-- 连接数据库的基本信息 -->
<property name="javax.persistence.jdbc.driver"
value="com.mysql.cj.jdbc.Driver" />
<property name="javax.persistence.jdbc.url"
value="jdbc:mysql://localhost:3306/jpadb?useSSL=false&amp;serverTimezone=Asia/Shanghai" />
<property name="javax.persistence.jdbc.user" value="root" />
<property name="javax.persistence.jdbc.password"
value="root" />
<property name="eclipselink.logging.level" value="all" />
<property name="eclipselink.ddl-generation"
value="create-or-extend-tables" />
<property name="eclipselink.show_sql" value="true" />
</properties>
</persistence-unit>

3.实体类:
package com.atsico.pojo;

import javax.persistence.Embeddable;

@Embeddable
public class Address {

private int e_pincode;

private String e_city;

private String e_state;

public Address() {
}

public Address(int e_pincode, String e_city, String e_state) {
this.e_pincode = e_pincode;
this.e_city = e_city;
this.e_state = e_state;
}

public int getE_pincode() {
return e_pincode;
}

public void setE_pincode(int e_pincode) {
this.e_pincode = e_pincode;
}

public String getE_city() {
return e_city;
}

public void setE_city(String e_city) {
this.e_city = e_city;
}

public String getE_state() {
return e_state;
}

public void setE_state(String e_state) {
this.e_state = e_state;
}

@Override
public String toString() {
return "Address{" + "e_pincode=" + e_pincode + ", e_city='" + e_city + '\'' + ", e_state='" + e_state + '\''
+ '}';
}

}

package com.atsico.pojo;

import javax.persistence.*;
import java.util.HashSet;
import java.util.Set;

@Entity
public class Employee {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int e_id;

private String e_name;

@ElementCollection
private Set<Address> address = new HashSet<Address>();

public Employee() {
}

public Employee(String e_name, Set<Address> address) {
this.e_name = e_name;
this.address = address;
}

public int getE_id() {
return e_id;
}

public void setE_id(int e_id) {
this.e_id = e_id;
}

public String getE_name() {
return e_name;
}

public void setE_name(String e_name) {
this.e_name = e_name;
}

public Set<Address> getAddress() {
return address;
}

public void setAddress(Set<Address> address) {
this.address = address;
}

@Override
public String toString() {
return "Employee{" + "e_id=" + e_id + ", e_name='" + e_name + '\'' + ", address=" + address + '}';
}

}

4.测试类
package com.atsico.service;

import com.atsico.pojo.Address;
import com.atsico.pojo.Employee;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

public class Jpa_Colloection_Test {

public static void main(String[] args) {

EntityManagerFactory emf =
Persistence.createEntityManagerFactory("myPersistUnit");
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();

Address a1 = new Address();
a1.setE_pincode(1);
a1.setE_city("朝阳");
a1.setE_state("北京");

Address a2 = new Address();
a2.setE_pincode(2);
a2.setE_city("丰台");
a2.setE_state("北京");

Employee e1 = new Employee();
e1.setE_name("ZhangYan");
e1.getAddress().add(a1);

Employee e2 = new Employee();
e2.setE_name("LiuKai");
e2.getAddress().add(a2);

em.persist(e1);
em.persist(e2);

em.getTransaction().commit();

em.close();
emf.close();

}

}

5.运行ok

6.运行过程中遇到的问题:
[main] ERROR - No Persistence provider for EntityManager named myPersistUnit
javax.persistence.PersistenceException: No Persistence provider for EntityManager named myPersistUnit at javax.persistence.Persistence.createEntityMa nagerFactory(Persistence.java:89)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:60)
解决办法:idea中配置文件的路径设置问题,正确路径:
src\main\resources\META-INF\persistence.xml
注意注意注意:找出问题的关键在于多看看官方文档

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: