- 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)
- )