W3Cschool
恭喜您成為首批注冊用戶
獲得88經驗值獎勵
以下代碼顯示了如何將集合與目標實體映射到數(shù)據(jù)庫。
// 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; @Entity public 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; @Transactional public 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; @Embeddable public 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(); } }下載 ElementCollection_CollectionTable_Override.zip
以下是數(shù)據(jù)庫轉儲。
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
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: