public class Customer { private Integer id; private String name; private Address homeAddress; //家庭地址 private Address comAddress; //公司地址 // getter and setter }
public class Address { private String province; private String city; private String street; private String zipcode; //private Customer customer; // getter and setter }
<hibernate-mapping package="mypack"> <class name="Customer" table="tbl_customer"> <id name="id"> <generator class="increment" /> </id> <property name="name" /> <component name="homeAddress" class="Address"> <!-- <parent name="customer" /> --> <property name="province" column="home_province" /> <property name="city" column="home_city" /> <property name="street" column="home_street" /> <property name="zipcode" column="home_zipcode" /> </component> <component name="comAddress" class="Address"> <!-- <parent name="customer" /> --> <property name="province" column="com_province" /> <property name="city" column="com_city" /> <property name="street" column="com_street" /> <property name="zipcode" column="com_zipcode" /> </component> </class> </hibernate-mapping>
@Entity @Table(name = "tbl_customer") public class Customer { @Id @GenericGenerator(name = "myIncrement", strategy = "increment") @GeneratedValue(generator = "myIncrement") private Integer id; @Column(name = "name") private String name; @Embedded @AttributeOverrides({ @AttributeOverride(name = "province", column = @Column(name = "home_province")), @AttributeOverride(name = "city", column = @Column(name = "home_city")), @AttributeOverride(name = "street", column = @Column(name = "home_street")), @AttributeOverride(name = "zipcode", column = @Column(name = "home_zipcode")) }) private Address homeAddress; @Embedded @AttributeOverrides({ @AttributeOverride(name = "province", column = @Column(name = "com_province")), @AttributeOverride(name = "city", column = @Column(name = "com_city")), @AttributeOverride(name = "street", column = @Column(name = "com_street")), @AttributeOverride(name = "zipcode", column = @Column(name = "com_zipcode")) }) private Address comAddress; // getter and setter }
@Embeddable public class Address implements Serializable { private String province; private String city; private String street; private String zipcode; //@Transient //private Customer customer; // getter and setter }
Customer customer = new Customer(); Address homeAddress = new Address("province1", "city1", "street1", "100001"); Address comAddress = new Address("province2", "city2", "street2", "200002"); customer.setName("Tom"); customer.setHomeAddress(homeAddress); customer.setComAddress(comAddress); session.save(customer);
Hibernate: create table tbl_customer ( id integer not null, name varchar(255), home_province varchar(255), home_city varchar(255), home_street varchar(255), home_zipcode varchar(255), com_province varchar(255), com_city varchar(255), com_street varchar(255), com_zipcode varchar(255), primary key (id) )