W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
以下代碼顯示如何將帶??有枚舉鍵值的Java java.util.Map保存到數(shù)據(jù)庫。
PhoneType
是枚舉類型。
@ElementCollection @CollectionTable(name="EMP_PHONE") @MapKeyEnumerated(EnumType.STRING) @MapKeyColumn(name="PHONE_TYPE") @Column(name="PHONE_NUM") private Map<PhoneType, String> phoneNumbers = new HashMap();
以下代碼來自Employee.java。
package cn.w3cschool.common; import java.util.HashMap; import java.util.Map; import javax.persistence.CollectionTable; import javax.persistence.Column; import javax.persistence.ElementCollection; import javax.persistence.Entity; import javax.persistence.EnumType; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.ManyToOne; import javax.persistence.MapKeyColumn; import javax.persistence.MapKeyEnumerated; enum PhoneType { Home, Mobile, Work } @Entity public class Employee { @Id @GeneratedValue(strategy=GenerationType.IDENTITY) private int id; private String name; private long salary; @ElementCollection @CollectionTable(name="EMP_PHONE") @MapKeyEnumerated(EnumType.STRING) @MapKeyColumn(name="PHONE_TYPE") @Column(name="PHONE_NUM") private Map<PhoneType, String> phoneNumbers = new HashMap(); @ManyToOne private Department department; 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 long getSalary() { return salary; } public void setSalary(long salary) { this.salary = salary; } public Department getDepartment() { return department; } public void setDepartment(Department department) { this.department = department; } public Map<PhoneType, String> getPhoneNumbers() { return phoneNumbers; } public void setPhoneNumbers(Map<PhoneType, String> phoneNumbers) { this.phoneNumbers = phoneNumbers; } public String toString() { StringBuffer aBuffer = new StringBuffer("Employee "); aBuffer.append(" id: "); aBuffer.append(id); aBuffer.append(" with dept: "); if(null != department) { aBuffer.append(department.getName()); } aBuffer.append(" phoneNumbers: "); for (Map.Entry e : phoneNumbers.entrySet()) { aBuffer.append(e.getKey().toString() + "[" + e.getValue() + "] "); } return aBuffer.toString(); } }
下面的代碼來自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 e = new Employee(); e.setName("Tom"); Department d = new Department(); d.addEmployee(e); d.setName("test"); e.setDepartment(d); e.getPhoneNumbers().put(PhoneType.Home, "1231231231"); d.addEmployee(e); em.persist(d); em.persist(e); } @PersistenceContext private EntityManager em; }
下面的代碼來自Department.java。
package cn.w3cschool.common; import java.util.ArrayList; import java.util.List; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.OneToMany; import javax.persistence.OrderBy; @Entity public class Department { @Id @GeneratedValue(strategy=GenerationType.IDENTITY) private int id; private String name; @OneToMany(mappedBy="department") @OrderBy("name ASC") private List<Employee> employees; public Department() { employees = new ArrayList<Employee>(); } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String deptName) { this.name = deptName; } public void addEmployee(Employee employee) { getEmployees().add( employee); if (employee.getDepartment() != null) { employee.getDepartment().getEmployees().remove(employee.getName()); } employee.setDepartment(this); } public List<Employee> getEmployees() { return employees; } public String toString() { StringBuffer aBuffer = new StringBuffer("Department "); aBuffer.append(" id: "); aBuffer.append(id); aBuffer.append(" name: "); aBuffer.append(name); aBuffer.append(" employeeCount: "); if(null != employees) { aBuffer.append(employees.size()); } return aBuffer.toString(); } }下載 ElementCollection_EnumMap.zip
以下是數(shù)據(jù)庫轉(zhuǎn)儲(chǔ)。
Table Name: DEPARTMENT Row: Column Name: ID, Column Type: INTEGER: Column Value: 1 Column Name: NAME, Column Type: VARCHAR: Column Value: test Table Name: EMPLOYEE Row: Column Name: ID, Column Type: INTEGER: Column Value: 1 Column Name: NAME, Column Type: VARCHAR: Column Value: Tom Column Name: SALARY, Column Type: BIGINT: Column Value: 0 Column Name: DEPARTMENT_ID, Column Type: INTEGER: Column Value: 1 Table Name: EMP_PHONE Row: Column Name: EMPLOYEE_ID, Column Type: INTEGER: Column Value: 1 Column Name: PHONE_NUM, Column Type: VARCHAR: Column Value: 1231231231 Column Name: PHONE_TYPE, Column Type: VARCHAR: Column Value: Home
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: