Set集合的配置
数据表的创建:
create table EMPLOYEE ( id INT NOT NULL auto_increment, first_name VARCHAR(20) default NULL, last_name VARCHAR(20) default NULL, salary INT default NULL, PRIMARY KEY (id) );
create table CERTIFICATE ( id INT NOT NULL auto_increment, certificate_name VARCHAR(30) default NULL, employee_id INT default NULL, PRIMARY KEY (id) );
创建对应的实体:
package com.study01;
import java.util.Set;
public class Employee {
private int id;
private String firstName;
private String lastName;
private int salary;
private Set certificates;
public Employee() {
}
public Employee(String fname, String lname, int salary) {
this.firstName = fname;
this.lastName = lname;
this.salary = salary;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public int getSalary() {
return salary;
}
public void setSalary(int salary) {
this.salary = salary;
}
public Set getCertificates() {
return certificates;
}
public void setCertificates(Set certificates) {
this.certificates = certificates;
}
}
package com.study01;
public class Certificate {
private int id;
private String name;
public Certificate() {
}
public Certificate(String name) {
this.name = name;
}
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 boolean equals(Object obj) {
if (obj == null)
return false;
if (!this.getClass().equals(obj.getClass()))
return false;
Certificate obj2 = (Certificate) obj;
//if ((this.id == obj2.getId()) && (this.name.equals(obj2.getName()))) {
// return true;
//}
if(this.name.equals(obj2.getName())) return true;
return false;
}
public int hashCode() {
int tmp = 0;
tmp = (id + name).hashCode();
return tmp;
}
}
注意这里对equals和hashCode方法进行了重写。set集合中元素不重复。是否重复,是通过hashCode和equals方法进行比较的。
hibernate主配置文件的配置如下:
org.hibernate.dialect.MySQLDialect com. mysql.jdbc.Driver jdbc:mysql://localhost/test root 253503125
映射文件的配置:
This class contains the employee detail.
This class contains the certificate records.
测试:
package com.study01;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
public class ManageEmployee {
private static SessionFactory factory;
public static void main(String[] args) {
try {
factory = new Configuration().configure().buildSessionFactory();
} catch (Throwable ex) {
System.err.println("Failed to create sessionFactory object." + ex);
throw new ExceptionInInitializerError(ex);
}
ManageEmployee ME = new ManageEmployee();
HashSet set1 = new HashSet();
set1.add(new Certificate("MCA"));
s