hibernate關聯關係註解(一對多、多對一、一對一)
阿新 • • 發佈:2019-01-24
一對多、多對一、一對一的註解實現
casecade={CasecadeType.REFRESH}的含義是隻是查詢級聯,它還有其他3個型別:
CascadeType.MERGE級聯更新
CascadeType.PERSIST級聯儲存
CascadeType.REMOVE級聯刪除
optional=false定義關聯類不一定要存在
@JoinColumn 關聯的物件的欄位
@ManyToOne多對一 @OneToMany一對多 @OneToOne一對一
需要注意的是一對一關聯關係,hibernate會建立唯一約束,用錯的話,後果很嚴重奧。
event物件
user物件@Entity @Table(name = "event") public class EventEntity implements Serializable{ /** * */ private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "eventId", nullable = true) private long eventId; //事件id private String eventNote; //事件內容 private String eventTitle; //事件標題 private String createTime; //建立時間 @ManyToOne(cascade = {CascadeType.REFRESH}, optional = false) @JoinColumn(name="userId") private UserEntity user; @OneToOne(optional = false, cascade = CascadeType.REFRESH) @JoinColumn(name = "eventTitleImage") private EventImageEntity eventTitleImage; //事件封面照片 private String eventAddress; //事件地址 private String eventType; //事件型別 private String lon; //經度 private String lat; //緯度 private String eventstate; //事件狀態 @OneToMany(cascade = {CascadeType.REFRESH}) @JoinColumn(name = "eventId") private List<EventImageEntity> eventImageList; public long getEventId() { return eventId; } public void setEventId(long eventId) { this.eventId = eventId; } public String getEventNote() { return eventNote; } public void setEventNote(String eventNote) { this.eventNote = eventNote; } public String getEventTitle() { return eventTitle; } public void setEventTitle(String eventTitle) { this.eventTitle = eventTitle; } public String getCreateTime() { return createTime; } public void setCreateTime(String createTime) { this.createTime = createTime; } public UserEntity getUser() { return user; } public void setUser(UserEntity user) { this.user = user; } public EventImageEntity getEventTitleImage() { return eventTitleImage; } public void setEventTitleImage(EventImageEntity eventTitleImage) { this.eventTitleImage = eventTitleImage; } public String getEventAddress() { return eventAddress; } public void setEventAddress(String eventAddress) { this.eventAddress = eventAddress; } public String getEventType() { return eventType; } public void setEventType(String eventType) { this.eventType = eventType; } public String getLon() { return lon; } public void setLon(String lon) { this.lon = lon; } public String getLat() { return lat; } public void setLat(String lat) { this.lat = lat; } public String getEventstate() { return eventstate; } public void setEventstate(String eventstate) { this.eventstate = eventstate; } public List<EventImageEntity> getEventImageList() { return eventImageList; } public void setEventImageList(List<EventImageEntity> eventImageList) { this.eventImageList = eventImageList; } }
image物件@Entity @Table(name = "user") public class UserEntity implements Serializable { /** * */ private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "userId") private long userId; private String username; //使用者名稱稱 private String phone; //使用者電話 private String password; //密碼 @OneToOne(optional = false, cascade = CascadeType.REFRESH) @JoinColumn(name = "userimage") private ImageEntity userImage; //使用者頭像 private String isRole; //是否有許可權 private String createTime; //建立時間 private String sign; //簽名 private String sex; //性別 private String age; //年紀 private String birthday; //生日 private String numberId; //使用者ID標示 private String emotional; //情感狀態 private String updateTime; //修改時間 private String userstate; //使用者狀態(1正常 2禁用 3刪除) @ManyToOne(cascade={CascadeType.REFRESH},optional = false) @JoinColumn(name="userLevel") private Exp exp; //等級 private long exping; //當前經驗值 public long getUserId() { return userId; } public void setUserId(long userId) { this.userId = userId; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPhone() { return phone; } public void setPhone(String phone) { this.phone = phone; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public ImageEntity getUserImage() { return userImage; } public void setUserImage(ImageEntity userImage) { this.userImage = userImage; } public String getIsRole() { return isRole; } public void setIsRole(String isRole) { this.isRole = isRole; } public String getCreateTime() { return createTime; } public void setCreateTime(String createTime) { this.createTime = createTime; } public String getSign() { return sign; } public void setSign(String sign) { this.sign = sign; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } public String getBirthday() { return birthday; } public void setBirthday(String birthday) { this.birthday = birthday; } public String getNumberId() { return numberId; } public void setNumberId(String numberId) { this.numberId = numberId; } public String getEmotional() { return emotional; } public void setEmotional(String emotional) { this.emotional = emotional; } public String getUpdateTime() { return updateTime; } public void setUpdateTime(String updateTime) { this.updateTime = updateTime; } public String getUserstate() { return userstate; } public void setUserstate(String userstate) { this.userstate = userstate; } public Exp getExp() { return exp; } public void setExp(Exp exp) { this.exp = exp; } public long getExping() { return exping; } public void setExping(long exping) { this.exping = exping; } }
exp物件@Entity @Table(name = "image") public class ImageEntity implements Serializable{ /** * */ private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "imageId") private long imageId; private String url; public long getImageId() { return imageId; } public void setImageId(long imageId) { this.imageId = imageId; } public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } }
@Entity
@Table(name = "exp")
public class Exp {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "expId")
private long expId;
private long grade; //等級
private long expnumber; //經驗值
private String expname; //顯示名稱
public long getExtId() {
return expId;
}
public void setExtId(long expId) {
this.expId = expId;
}
public long getGrade() {
return grade;
}
public void setGrade(long grade) {
this.grade = grade;
}
public long getExpnumber() {
return expnumber;
}
public void setExpnumber(long expnumber) {
this.expnumber = expnumber;
}
public String getExpname() {
return expname;
}
public void setExpname(String expname) {
this.expname = expname;
}
}
eventImage物件
@Entity
@Table(name = "eventimage")
public class EventImageEntity implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "eventImageId")
private long eventImageId;
private long eventId;
@OneToOne(optional = false, cascade = CascadeType.REFRESH)
@JoinColumn(name = "imageId")
private ImageEntity image;
public long getEventImageId() {
return eventImageId;
}
public void setEventImageId(long eventImageId) {
this.eventImageId = eventImageId;
}
public long getEventId() {
return eventId;
}
public void setEventId(long eventId) {
this.eventId = eventId;
}
public ImageEntity getImage() {
return image;
}
public void setImage(ImageEntity image) {
this.image = image;
}
}