@big-bear
2017-09-09T08:17:06.000000Z
字数 8902
阅读 861
hibernate
A类中单向关联B类
在A类中加入
参考链接
参考代码存在问题的解决方案
多对多需要一张由hibernate维护的关系表,这个关系表不用建pojo的
第一个实体
@Entity
@Table(name = "DIC_JOB_DOMAIN")
public class DicJoBDomain {
@Id
private Long id;
@Column(name = "NAME")
private String name;
@ManyToMany(mappedBy = "domains")
private Set<BaseJob> baseJobs;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Set<BaseJob> getBaseJobs() {
return baseJobs;
}
public void setBaseJobs(Set<BaseJob> baseJobs) {
this.baseJobs = baseJobs;
}
}
第二个实体
package com.wisdombud.wisdomhr.pojo.job;
import java.util.Date;
import java.util.Set;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import org.hibernate.search.annotations.Field;
import org.hibernate.search.annotations.Fields;
import org.hibernate.search.annotations.Index;
import org.hibernate.search.annotations.Indexed;
import org.hibernate.search.annotations.Store;
import org.springframework.format.annotation.DateTimeFormat;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.wisdombud.constants.Constants;
import com.wisdombud.wisdomhr.pojo.dic.DicJoBDomain;
/**
* 功能: 职位表.<br/>
* date: 2015年08月09日 10:59 <br/>
*
* @author joseph
* @version
*/
/**
* @author wgzuo
*/
@Entity
@Table(name = "BASE_JOB")
@Indexed(index = "indexes/job")
public class BaseJob extends com.wisdombud.pojo.UuidEntity {
private static final long serialVersionUID = 1L;
@Column(name = "CARRER_ID")
private String carrerId;
@Column(name = "SPIDER_JOB_ID")
private String spiderJobId;
/**
* 标题
**/
@Column(name = "TITLE")
@Field(name = "title", index = Index.TOKENIZED, store = Store.YES)
private String title;
/**
* 1:全职2:实习
**/
@Column(name = "CATEGORY")
@Field(name = "category", index = Index.TOKENIZED, store = Store.YES)
private String category;
/**
* 就业系统中的ID
*/
@Column(name = "ENTERPRISE_CARRER_ID")
private String enterpriseCarrerId;
/**
* 企业ID,如果有该ID 表示该职位是由企业发的
**/
@Column(name = "ENTERPRISE_ID")
private String enterpriseId;
/**
* 企业名称
**/
@Column(name = "ENTERPRISE_NAME")
@Field(name = "enterpriseName", index = Index.TOKENIZED, store = Store.YES)
private String enterpriseName;
@Column(name = "ENTERPRISE_LOGO")
private String enterpriseLogo = Constants.ENTERPRISE_DEFAULT_PORTAIT; ;// 默认的logo;
/**
* 企业所属行业
**/
@Column(name = "ENTERPRISE_INDUSTRY")
private String enterpriseIndustry;
/**
* 企业性质
**/
@Column(name = "ENTERPRISE_NATURE")
private String enterpriseNature;
/**
* 工作城市,
**/
@Column(name = "LOCATION")
@Field(name = "location", index = Index.TOKENIZED, store = Store.YES)
private String location;
/**
* 学历要求,以“,”分隔的学历id1:大专及以上2:本科及以上3:硕士及以上4:博士
**/
@Field(name = "degree", index = Index.TOKENIZED, store = Store.YES)
@Column(name = "DEGREE")
private String degree;
/**
* 工资
**/
@Column(name = "SALARY")
private String salary;
/**
* 阅读次数
**/
@Column(name = "VIEW_COUNT")
private Integer viewCount = 0;
@Column(name = "DELIVER_COUNT")
private Integer deliverCount = 0;
/**
* 收藏次数
**/
@Column(name = "FAVORITE_COUNT")
private Integer favoriteCount = 0;
/**
* 点赞数量
**/
@Column(name = "LIKE_COUNT")
private Integer likeCount = 0;
/**
* 投递简历数量
**/
@Column(name = "RESUME_COUNT")
private Integer resumeCount = 0;
/**
* 详细工作地址
**/
@Column(name = "ADDRESS")
@Field(name = "address", index = Index.TOKENIZED, store = Store.YES)
private String address;
/**
* hotWeight:热门排行权重.
*
* @since JDK 1.8
*/
@Fields({ @Field, @Field(name = "hotWeight", index = Index.UN_TOKENIZED) })
@Column(name = "HOT_WEIGHT")
private Long hotWeight;
/**
* spreadLevel:推广级别,0是没有推广,1是最低级别
*
* @since JDK 1.8
*/
@Column(name = "SPREAD_LEVEL")
private Integer spreadLevel = 0;
/**
* invitationLevel:邀约级别,0是没有邀约,1是最低级别
*
* @since JDK 1.8
*/
@Column(name = "INVITATION_LEVEL")
private Integer invitationLevel = 0;
/**
* 0:无效1:有效2:举报处理中
**/
@Column(name = "STATUS")
private Integer status = 1;
/**
* 举报ID
**/
@Column(name = "ACCUSATION_ID")
private String accusationId;
/**
* 来源
**/
@Column(name = "SOURCE")
private String source;
@javax.persistence.Transient
private String content;
/**
* 下线时间
**/
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "Asia/Shanghai")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "OFFLINE_TIME")
protected Date offLineTime;
/**
* 激活时间
**/
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "Asia/Shanghai")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "ACTIVATE_TIME")
protected Date activateTime;
/**
* 是否加V 0不加V 1加V
**/
@javax.persistence.Transient
private Integer isVerify;
/**
* 是否有圈子的标记
*/
// @Field(name = "domainId", index = Index.UN_TOKENIZED, store = Store.YES)
@Column(name = "HAS_DOMAIN")
private Integer hasDomain = 0;
@ManyToMany
@JoinTable(name = "H_REL_JOB_DOMAIN", joinColumns = { @JoinColumn(name = "JOB_ID") }, inverseJoinColumns = { @JoinColumn(name = "DOMAIN_ID") })
private Set<DicJoBDomain> domains;
public String getCarrerId() {
return carrerId;
}
public void setCarrerId(String carrerId) {
this.carrerId = carrerId;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getCategory() {
return category;
}
public void setCategory(String category) {
this.category = category;
}
public String getEnterpriseCarrerId() {
return enterpriseCarrerId;
}
public void setEnterpriseCarrerId(String enterpriseCarrerId) {
this.enterpriseCarrerId = enterpriseCarrerId;
}
public String getEnterpriseId() {
return enterpriseId;
}
public void setEnterpriseId(String enterpriseId) {
this.enterpriseId = enterpriseId;
}
public String getEnterpriseName() {
return enterpriseName;
}
public void setEnterpriseName(String enterpriseName) {
this.enterpriseName = enterpriseName;
}
public String getEnterpriseIndustry() {
return enterpriseIndustry;
}
public void setEnterpriseIndustry(String enterpriseIndustry) {
this.enterpriseIndustry = enterpriseIndustry;
}
public String getEnterpriseNature() {
return enterpriseNature;
}
public void setEnterpriseNature(String enterpriseNature) {
this.enterpriseNature = enterpriseNature;
}
public String getLocation() {
return location;
}
public void setLocation(String location) {
this.location = location;
}
public String getDegree() {
return degree;
}
public void setDegree(String degree) {
this.degree = degree;
}
public String getSalary() {
return salary;
}
public void setSalary(String salary) {
this.salary = salary;
}
public Integer getViewCount() {
if (viewCount == null) {
return 0;
}
return viewCount;
}
public void setViewCount(Integer viewCount) {
this.viewCount = viewCount;
}
public Integer getFavoriteCount() {
if (favoriteCount == null) {
return 0;
}
return favoriteCount;
}
public void setFavoriteCount(Integer favoriteCount) {
this.favoriteCount = favoriteCount;
}
public Integer getDeliverCount() {
if (deliverCount == null) {
return 0;
}
return deliverCount;
}
public void setDeliverCount(Integer deliverCount) {
this.deliverCount = deliverCount;
}
public Integer getLikeCount() {
if (likeCount == null) {
return 0;
}
return likeCount;
}
public void setLikeCount(Integer likeCount) {
this.likeCount = likeCount;
}
public Integer getResumeCount() {
if (resumeCount == null) {
return 0;
}
return resumeCount;
}
public void setResumeCount(Integer resumeCount) {
this.resumeCount = resumeCount;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public Long getHotWeight() {
if (hotWeight == null) {
return 0L;
}
return hotWeight;
}
public void setHotWeight(Long hotWeight) {
this.hotWeight = hotWeight;
}
public Integer getSpreadLevel() {
return spreadLevel;
}
public void setSpreadLevel(Integer spreadLevel) {
this.spreadLevel = spreadLevel;
}
public Integer getInvitationLevel() {
return invitationLevel;
}
public void setInvitationLevel(Integer invitationLevel) {
this.invitationLevel = invitationLevel;
}
public String getSource() {
return source;
}
public void setSource(String source) {
this.source = source;
}
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
public String getAccusationId() {
return accusationId;
}
public void setAccusationId(String accusationId) {
this.accusationId = accusationId;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String getEnterpriseLogo() {
return enterpriseLogo;
}
public void setEnterpriseLogo(String enterpriseLogo) {
this.enterpriseLogo = enterpriseLogo;
}
public Date getOffLineTime() {
return offLineTime;
}
public void setOffLineTime(Date offLineTime) {
this.offLineTime = offLineTime;
}
public Date getActivateTime() {
return activateTime;
}
public void setActivateTime(Date activateTime) {
this.activateTime = activateTime;
}
/**
* @see java.lang.Object#hashCode()
*/
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((this.id == null) ? 0 : id.hashCode());
return result;
}
/**
* @see java.lang.Object#equals(java.lang.Object)
*/
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
BaseJob other = (BaseJob) obj;
if (id == null) {
if (other.id != null)
return false;
} else if (!id.equals(other.id))
return false;
return true;
}
public Integer getIsVerify() {
return isVerify;
}
public String getSpiderJobId() {
return spiderJobId;
}
public void setSpiderJobId(String spiderJobId) {
this.spiderJobId = spiderJobId;
}
public void setIsVerify(Integer isVerify) {
this.isVerify = isVerify;
}
public Integer getHasDomain() {
return hasDomain;
}
public void setHasDomain(Integer hasDomain) {
this.hasDomain = hasDomain;
}
public Set<DicJoBDomain> getDomains() {
return domains;
}
public void setDomains(Set<DicJoBDomain> domains) {
this.domains = domains;
}
}