Hibernate4组件映射

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

猜你喜欢

转载自1194867672-qq-com.iteye.com/blog/1739047