Hibernate OneToOne注解关联查询案例
来源:互联网 发布:北京软件定制开发 编辑:程序博客网 时间:2024/06/05 02:18
hibernate 的OneToOne注解是把两张表关联起来
下面是案例:
把User(用户表)表和Customer(客户表)关联起来
User表对应的实体类如下:
package com.pms.login.pojo;import java.util.Date;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Id;import javax.persistence.SequenceGenerator;import javax.persistence.Table;import javax.persistence.UniqueConstraint;import org.springframework.format.annotation.DateTimeFormat;import com.fasterxml.jackson.annotation.JsonFormat;@Entity@Table(name="MAPS_MST_STAFF")@SequenceGenerator (name = "SEQ", sequenceName = "MST_STAFF_SEQ", allocationSize = 1) public class User { @Id @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ") @Column(name = "id") private Integer id; //员工编号 @Column(name="STAFF_ID") private String staffId; //员工姓名 @Column(name="STAFF_NAME") private String staffName; //登录名 @Column(name="STAFF_LOGIN_NAME") private String staffLoginName; //员工角色 @Column(name="STAFF_CHARACTOR") private String staffCharactor; //开始时间 @Column(name="START_DT") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date startDate; //结束时间 @Column(name="END_DT") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date endDate; //联系电话 @Column(name="STAFF_TEL") private String staffTel; //员工性别 @Column(name="STAFF_SEX") private String staffSex; //密码 @Column(name="STAFF_PASS") private String staffPass; //密码有效期 @Column(name="PASS_END_DT") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date passEndDate; //是否能登陆 @Column(name="LOGIN_FLG") private String loginFlg; public User(){ } public User(Integer id, String staffId, String staffName, String staffLoginName, String staffCharactor, Date startDate, Date endDate, String staffTel, String staffSex, String staffPass, Date passEndDate, String loginFlg) { super(); this.id = id; this.staffId = staffId; this.staffName = staffName; this.staffLoginName = staffLoginName; this.staffCharactor = staffCharactor; this.startDate = startDate; this.endDate = endDate; this.staffTel = staffTel; this.staffSex = staffSex; this.staffPass = staffPass; this.passEndDate = passEndDate; this.loginFlg = loginFlg; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getStaffId() { return staffId; } public void setStaffId(String staffId) { this.staffId = staffId; } public String getStaffName() { return staffName; } public void setStaffName(String staffName) { this.staffName = staffName; } public String getStaffLoginName() { return staffLoginName; } public void setStaffLoginName(String staffLoginName) { this.staffLoginName = staffLoginName; } public String getStaffCharactor() { return staffCharactor; } public void setStaffCharactor(String staffCharactor) { this.staffCharactor = staffCharactor; } public Date getStartDate() { return startDate; } public void setStartDate(Date startDate) { this.startDate = startDate; } public Date getEndDate() { return endDate; } public void setEndDate(Date endDate) { this.endDate = endDate; } public String getStaffTel() { return staffTel; } public void setStaffTel(String staffTel) { this.staffTel = staffTel; } public String getStaffSex() { return staffSex; } public void setStaffSex(String staffSex) { this.staffSex = staffSex; } public String getStaffPass() { return staffPass; } public void setStaffPass(String staffPass) { this.staffPass = staffPass; } public Date getPassEndDate() { return passEndDate; } public void setPassEndDate(Date passEndDate) { this.passEndDate = passEndDate; } public String getLoginFlg() { return loginFlg; } public void setLoginFlg(String loginFlg) { this.loginFlg = loginFlg; } @Override public String toString() { return "User [id=" + id + ", staffId=" + staffId + ", staffName=" + staffName + ", staffLoginName=" + staffLoginName + ", staffCharactor=" + staffCharactor + ", startDate=" + startDate + ", endDate=" + endDate + ", staffTel=" + staffTel + ", staffSex=" + staffSex + ", staffPass=" + staffPass + ", passEndDate=" + passEndDate + ", loginFlg=" + loginFlg + "]"; }}
这表没什么特别的,关键是customer表实体类:
package com.pms.projectsys.pojo;import java.util.Date;import javax.persistence.CascadeType;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.OneToOne;import javax.persistence.SequenceGenerator;import javax.persistence.Table;import org.springframework.format.annotation.DateTimeFormat;import com.fasterxml.jackson.annotation.JsonFormat;import com.pms.login.pojo.User;@Entity@Table(name="MAPS_MST_PJ_CUSTOMER")@SequenceGenerator (name = "CUSTOMER_SEQ", sequenceName = "MAPS_MST_PJ_CUSTOMER_SEQ", allocationSize = 1) public class Customer { //客户ID @Id @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "CUSTOMER_SEQ") @Column(name = "CUSTOMER_ID") private Integer customerId; //客户名称 @Column(name="CUSTOMER_NAME") private String customerName; //创建时间 @Column(name="CREATION_TIME") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date creationTime; //创建人ID @Column(name="CREATION_USER_ID",updatable=false) private Integer creationUserId; //修改时间 @Column(name="MODIFIED_TIME") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date modifiedTime; //修改人ID @Column(name="MODIFIED_USER_ID") private Integer modifiedUserId; @OneToOne(optional = true, cascade = CascadeType.ALL) @JoinColumn(name = "creation_user_id",referencedColumnName="id",updatable=false,insertable=false) private User creationUser; public User getCreationUser() { return creationUser; } public void setCreationUser(User creationUser) { this.creationUser = creationUser; } @OneToOne(optional = true, cascade = CascadeType.ALL) @JoinColumn(name = "modified_user_id",referencedColumnName="id",updatable=false,insertable=false) private User modifiedUser; @javax.persistence.Transient private String creationUserName; public String getCreationUserName() { return creationUserName; } public void setCreationUserName(String creationUserName) { this.creationUserName = creationUserName; } @javax.persistence.Transient private String modifiedUserName; public String getModifiedUserName() { return modifiedUserName; } public void setModifiedUserName(String modifiedUserName) { this.modifiedUserName = modifiedUserName; } @Override public String toString() { return "Customer [customerId=" + customerId + ", customerName=" + customerName + ", creationTime=" + creationTime + ", creationUserId=" + creationUserId + ", modifiedTime=" + modifiedTime + ", modifiedUserId=" + modifiedUserId + ", creationUser=" + creationUser + ", modifiedUser=" + modifiedUser + ", creationUserName=" + creationUserName + ", modifiedUserName=" + modifiedUserName + "]"; } public Customer(){ } public Customer(Integer customerId, String customerName, User creationUser, Date creationTime, User modifiedUser,Date modifiedTime) { super(); this.customerId = customerId; this.customerName = customerName; this.creationTime = creationTime; this.modifiedTime = modifiedTime; this.creationUserId=creationUser.getId(); this.modifiedUserId=modifiedUser.getId(); this.creationUserName=creationUser.getStaffName(); this.modifiedUserName=modifiedUser.getStaffName(); } public User getModifiedUser() { return modifiedUser; } public void setModifiedUser(User modifiedUser) { this.modifiedUser = modifiedUser; } public Integer getCustomerId() { return customerId; } public void setCustomerId(Integer customerId) { this.customerId = customerId; } public String getCustomerName() { return customerName; } public void setCustomerName(String customerName) { this.customerName = customerName; } public Date getCreationTime() { return creationTime; } public void setCreationTime(Date creationTime) { this.creationTime = creationTime; } public Integer getCreationUserId() { return creationUserId; } public void setCreationUserId(Integer creationUserId) { this.creationUserId = creationUserId; } public Date getModifiedTime() { return modifiedTime; } public void setModifiedTime(Date modifiedTime) { this.modifiedTime = modifiedTime; } public Integer getModifiedUserId() { return modifiedUserId; } public void setModifiedUserId(Integer modifiedUserId) { this.modifiedUserId = modifiedUserId; }}
在Customer实体类里面
增加一个Use类型的属性,
@OneToOne(optional = true, cascade = CascadeType.ALL) @JoinColumn(name = "creation_user_id",referencedColumnName="id",updatable=false,insertable=false) private User creationUser;
在属性上加上OneToOne注解,并且指明两个实体类表以哪个字段关联起来的,
@JoinColumn(name = "creation_user_id",referencedColumnName="id",updatable=false,insertable=false)
@JoinColumn这个注解属性里面:
name指向Customer对应的表里面所要关联的字段
referencedColumnName指向User对应的表,里面所要关联的字段
这样就把两张表通过字段关联起来了
阅读全文
0 0
- Hibernate OneToOne注解关联查询案例
- Hibernate OneToOne关联
- Hibernate OneToOne注解配置
- Hibernate OneToOne注解配置
- Hibernate OneToOne注解配置
- Hibernate OneToOne注解配置
- Hibernate OneToOne注解
- hibernate onetoone 注解
- Hibernate @OnetoOne注解
- hibernate注解之实体属性OneToOne 单双向关联(三)
- 【JPA】@OneToOne 一对一双向关联注解
- 【JPA】 @OneToOne 一对一单向关联注解
- Hibernate annotation@OneToOne共享主键关联
- hibernate JPA @OneToOne双向关联共享主键
- Hibernate学习总结:OneToOne单向主键关联
- Hibernate学习总结:OneToOne双向主键关联
- 关于hibernate 注解 OnetoOne 或 ManyToOne 写法
- Hibernate主键一对一关联映射实例【xml和注解版本@OneToOne@JoinColumn(name="wifeId")--主键单向】(十二)
- 14、线程(2)
- android studio ormLite复杂条件查询
- 网络判断
- EA&UML日拱一卒-状态图::延缓事件
- 解决GVIM中C-A组合键不起作用的问题
- Hibernate OneToOne注解关联查询案例
- DefaultAnnotationHandlerMapping不起作用,分析原因
- int ,long , long long类型的范围
- 10月集训test6
- 相机自动标定开发-第三阶段
- web项目中 .js .css .png 等文件无法加载的一种原因
- python字符串操作学习小结
- 24. Swap Nodes in Pairs
- 事件分发机制