广州北大青鸟计算机职业培训学校
互联网技术培训、软件技术培训、大数据培训、云计算培训、数据分析培训信息网
当前位置:网站首页 > 软件教程 > Java技术 > 正文

惠州什么是JPA ElementCollection CollectionTable覆盖?_北大青鸟IT学校

作者:邓华发布时间:2021-05-05分类:Java技术浏览:977


导读:什么是JPA ElementCollection CollectionTable覆盖?最近惠州北大青鸟很多学员都在问这个问题,那么下面惠州北大青鸟学术部老师给大家解答一下这个问题。

什么是JPA ElementCollection CollectionTable覆盖?最近惠州北大青鸟很多学员都在问这个问题,那么下面惠州北大青鸟学术部老师给大家解答一下这个问题。

以下代码显示了如何将集合与目标实体映射到数据库。

// Using a targetClass instead of generics
@ElementCollection(targetClass=VacationEntry.class)
@CollectionTable(name="VACATION",joinColumns=@JoinColumn(name="EMP_ID"))    
@AttributeOverride(name="daysTaken",column=@Column(name="DAYS_ABS"))private Collection vacationBookings = new LinkedList();

实例

以下代码来自Employee.java。

package cn.w3cschool.common;

import java.util.Collection;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.Set;

import javax.persistence.AttributeOverride;
import javax.persistence.CollectionTable;
import javax.persistence.Column;
import javax.persistence.ElementCollection;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;

@Entitypublic class Employee {
   @Id @GeneratedValue(strategy=GenerationType.IDENTITY)    private int id;    private String name;

   // Using a targetClass instead of generics
   @ElementCollection(targetClass=VacationEntry.class)
   @CollectionTable(name="VACATION",
          joinColumns=@JoinColumn(name="EMP_ID"))    
   @AttributeOverride(name="daysTaken",
          column=@Column(name="DAYS_ABS"))    private Collection vacationBookings = new LinkedList();

   // Using generics in place of a targetClass
   @ElementCollection
   @Column(name="NICKNAME")    private Set<String> nickNames = new HashSet();    
   public Collection getVacationBookings() {
       return vacationBookings;
   }    public void setVacationBookings(Collection vacationBookings) {
       this.vacationBookings = vacationBookings;
   }    public Set<String> getNickNames() {
       return nickNames;
   }    public void setNickNames(Set<String> nickNames) {
       this.nickNames = nickNames;
   }    
   public int getId() {
       return id;
   }    
   public void setId(int id) {
       this.id = id;
   }    
   public String getName() {
       return name;
   }    
   public void setName(String name) {
       this.name = name;
   }    
   public String toString() {
       return "Employee id: " + getId() + " name: " + getName() +
              " nickNames: " + nickNames;
   }
}

下面的代码来自PersonDaoImpl.java。

package cn.w3cschool.common;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

import org.springframework.transaction.annotation.Transactional;

@Transactionalpublic class PersonDaoImpl {  public void test() {

   Employee emp = new Employee();
   emp.setName("name");
   
   VacationEntry v = new VacationEntry();
   v.setDaysTaken(10);
   
   emp.getVacationBookings().add(v);
   emp.getNickNames().add("Tester");
   em.persist(emp);
 }

 @PersistenceContext  private EntityManager em;
}

以下代码来自VacationEntry.java。

package cn.w3cschool.common;


import java.util.Calendar;

import javax.persistence.Column;
import javax.persistence.Embeddable;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

@Embeddablepublic class VacationEntry {
   @Temporal(TemporalType.DATE)    private Calendar startDate;
   @Column(name="DAYS")    private int daysTaken;    public VacationEntry() {}    public VacationEntry(Calendar aStartDate, int daysTakenInt) {
       startDate = aStartDate;
       daysTaken = daysTakenInt;
   }    
   public Calendar getStartDate() {
       return startDate;
   }    public void setStartDate(Calendar startDate) {
       this.startDate = startDate;
   }    public int getDaysTaken() {
       return daysTaken;
   }    public void setDaysTaken(int daysTaken) {
       this.daysTaken = daysTaken;
   }    public String toString() {
       return "VacationEntry startDate: " + getStartDate().getTime() +
              ", daysTaken: " + getDaysTaken();
   }
}

以下是数据库转储。

Table Name: EMPLOYEE
Row:
   Column Name: ID,
   Column Type: INTEGER:
   Column Value: 1

   Column Name: NAME,
   Column Type: VARCHAR:
   Column Value: name





Table Name: EMPLOYEE_NICKNAMES
Row:
   Column Name: EMPLOYEE_ID,
   Column Type: INTEGER:
   Column Value: 1

   Column Name: NICKNAME,
   Column Type: VARCHAR:
   Column Value: Tester





Table Name: VACATION
Row:
   Column Name: EMP_ID,
   Column Type: INTEGER:
   Column Value: 1

   Column Name: DAYS_ABS,
   Column Type: INTEGER:
   Column Value: 10

   Column Name: STARTDATE,
   Column Type: DATE:
   Column Value: null

想学Java的同学们,可以来惠州北大青鸟新方舟校区详细了解。

Java15.jpg

Java

标签:惠州计算机JAVA软件开发惠州计算机Java软件开发惠州计算机JAVA培训惠州计算机JAVA软件开发学校惠州计算机Java软件开发培训JAVAJava软件开发北大青鸟IT计算机学校北大青鸟IT软件学校北大青鸟IT学校


Java技术排行
标签列表
网站分类
文章归档
最近发表