標籤:
資料庫mysql:user50表和order50表是一對多的關係
order50表有 外鍵: user_id
user類:
package com.c50.entity;import java.util.Date;import java.util.HashSet;import java.util.Set;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.FetchType;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.OneToMany;import javax.persistence.Table;import javax.persistence.Temporal;import javax.persistence.TemporalType;import org.hibernate.annotations.Cache;import org.hibernate.annotations.CacheConcurrencyStrategy;import org.hibernate.annotations.Cascade;import org.hibernate.annotations.CascadeType;import org.hibernate.annotations.GenericGenerator;//代表此類參與ORM映射,此註解必須要有@Entity //代表user這個類映射了一個表user50,如果表名和類名一樣,此註解可以省略@Table(name="user50")//讀寫緩衝許可權@Cache(usage=CacheConcurrencyStrategy.READ_WRITE)public class User { //主鍵,此註解必須要有 @Id //資料庫表中主鍵列名為id,如果實體類屬性名稱和列名相同,此註解可以省略 @Column(name="id") //主鍵的維護策略 @GenericGenerator(name="inc50",strategy="increment") @GeneratedValue(generator="inc50") private Integer userID; private String name; private Integer age; @Column(name="birth") //此屬性是日期類型,time:只儲存時間 date:只儲存日期 timestamp:(預設)日期+時間 @Temporal(TemporalType.DATE) private Date birthday; //關係屬性 //mappedBy="對方中映射著外鍵的關係屬性"=="order類中關係屬性為user" //消極式載入:fetch = FetchType.LAZY @OneToMany(mappedBy="user",fetch=FetchType.LAZY) //ALL:增刪改都可以級聯(cascade) //save-update:增加和更新可以級聯 //delete:刪除可以級聯 //如果不設定,則增刪改都不可以級聯 //注意:查詢例外,不受級聯許可權的控制,預設級聯。 @Cascade(value=CascadeType.DELETE) private Set<Order> orders=new HashSet<Order>(); public Set<Order> getOrders() { return orders; } public void setOrders(Set<Order> orders) { this.orders = orders; } public User(){} public User(Integer userID, String name, Integer age, Date birthday) { super(); this.userID = userID; this.name = name; this.age = age; this.birthday = birthday; } public Integer getUserID() { return userID; } public void setUserID(Integer userID) { this.userID = userID; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } @Override public String toString() { return "User [userID=" + userID + ", name=" + name + ", age=" + age + ", birthday=" + birthday + "]"; } }
order類:
package com.c50.entity;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.JoinColumn;import javax.persistence.ManyToOne;import javax.persistence.Table;import org.hibernate.annotations.GenericGenerator;@Entity@Table(name="order50")public class Order { @Id @GenericGenerator(name="inc50",strategy="increment") @GeneratedValue(generator="inc50") private Integer id; private Double price; private String note; //關係屬性 @ManyToOne //資料庫中order表,外鍵名為user_id,指向user表 @JoinColumn(name="user_id") private User user; public User getUser() { return user; } public void setUser(User user) { this.user = user; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public Double getPrice() { return price; } public void setPrice(Double price) { this.price = price; } public String getNote() { return note; } public void setNote(String note) { this.note = note; } @Override public String toString() { return "Order [id=" + id + ", price=" + price + ", note=" + note + "]"; } public Order(){} public Order(Integer id, Double price, String note) { super(); this.id = id; this.price = price; this.note = note; } }
Hibernate的註解