映射单向一对多的关联关系
新建项目项目请参考《JPA(五):映射关联关系------映射单向多对一的关联关系》中的例子进行修改(需要清空数据中的表,因为本例子还是使用customer,order表来测试,但是关联关系发生了变化):
Customer.java
package com.dx.jpa.singlemanytoone; import java.util.Date; import java.util.HashSet; import java.util.Set; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.OneToMany; import javax.persistence.Table; import javax.persistence.Temporal; import javax.persistence.TemporalType; import javax.persistence.Transient; @Entity @Table(name = "jpa_customer") public class Customer { private Integer id; private String fullName; private Integer age; private Date birth; private Date createDate; private Set<Order> orders = new HashSet<>(); @Id @GeneratedValue(strategy = GenerationType.AUTO) public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } @Column(name = "FULL_NAME", length = 64, nullable = false) public String getFullName() { return fullName; } public void setFullName(String fullName) { this.fullName = fullName; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } @Temporal(TemporalType.DATE) public Date getBirth() { return birth; } public void setBirth(Date birth) { this.birth = birth; } @Temporal(TemporalType.TIMESTAMP) public Date getCreateDate() { return createDate; } public void setCreateDate(Date createDate) { this.createDate = createDate; } // 映射一对多的关联关系 // @JoinColumn 用来映射一对多的关联关系 // @OneToMany 用来映射外键列 @JoinColumn(name = "CUSTOMER_ID") @OneToMany() public Set<Order> getOrders() { return orders; } public void setOrders(Set<Order> orders) { this.orders = orders; } // 帮助方法,不希望保存到数据库,但是需要动态获取Customer对象的属性。 @Transient public String getCustomerInfo() { return "username:" + fullName + ",age:" + age; } }