[关闭]
@big-bear 2017-09-09T08:17:06.000000Z 字数 8902 阅读 861

hibernate 关联

hibernate


A类中单向关联B类

po:

在A类中加入

多对多

参考链接
参考代码存在问题的解决方案
多对多需要一张由hibernate维护的关系表,这个关系表不用建pojo的

第一个实体

  1. @Entity
  2. @Table(name = "DIC_JOB_DOMAIN")
  3. public class DicJoBDomain {
  4. @Id
  5. private Long id;
  6. @Column(name = "NAME")
  7. private String name;
  8. @ManyToMany(mappedBy = "domains")
  9. private Set<BaseJob> baseJobs;
  10. public Long getId() {
  11. return id;
  12. }
  13. public void setId(Long id) {
  14. this.id = id;
  15. }
  16. public String getName() {
  17. return name;
  18. }
  19. public void setName(String name) {
  20. this.name = name;
  21. }
  22. public Set<BaseJob> getBaseJobs() {
  23. return baseJobs;
  24. }
  25. public void setBaseJobs(Set<BaseJob> baseJobs) {
  26. this.baseJobs = baseJobs;
  27. }
  28. }

第二个实体

  1. package com.wisdombud.wisdomhr.pojo.job;
  2. import java.util.Date;
  3. import java.util.Set;
  4. import javax.persistence.Column;
  5. import javax.persistence.Entity;
  6. import javax.persistence.JoinColumn;
  7. import javax.persistence.JoinTable;
  8. import javax.persistence.ManyToMany;
  9. import javax.persistence.Table;
  10. import javax.persistence.Temporal;
  11. import javax.persistence.TemporalType;
  12. import org.hibernate.search.annotations.Field;
  13. import org.hibernate.search.annotations.Fields;
  14. import org.hibernate.search.annotations.Index;
  15. import org.hibernate.search.annotations.Indexed;
  16. import org.hibernate.search.annotations.Store;
  17. import org.springframework.format.annotation.DateTimeFormat;
  18. import com.fasterxml.jackson.annotation.JsonFormat;
  19. import com.wisdombud.constants.Constants;
  20. import com.wisdombud.wisdomhr.pojo.dic.DicJoBDomain;
  21. /**
  22. * 功能: 职位表.<br/>
  23. * date: 2015年08月09日 10:59 <br/>
  24. *
  25. * @author joseph
  26. * @version
  27. */
  28. /**
  29. * @author wgzuo
  30. */
  31. @Entity
  32. @Table(name = "BASE_JOB")
  33. @Indexed(index = "indexes/job")
  34. public class BaseJob extends com.wisdombud.pojo.UuidEntity {
  35. private static final long serialVersionUID = 1L;
  36. @Column(name = "CARRER_ID")
  37. private String carrerId;
  38. @Column(name = "SPIDER_JOB_ID")
  39. private String spiderJobId;
  40. /**
  41. * 标题
  42. **/
  43. @Column(name = "TITLE")
  44. @Field(name = "title", index = Index.TOKENIZED, store = Store.YES)
  45. private String title;
  46. /**
  47. * 1:全职2:实习
  48. **/
  49. @Column(name = "CATEGORY")
  50. @Field(name = "category", index = Index.TOKENIZED, store = Store.YES)
  51. private String category;
  52. /**
  53. * 就业系统中的ID
  54. */
  55. @Column(name = "ENTERPRISE_CARRER_ID")
  56. private String enterpriseCarrerId;
  57. /**
  58. * 企业ID,如果有该ID 表示该职位是由企业发的
  59. **/
  60. @Column(name = "ENTERPRISE_ID")
  61. private String enterpriseId;
  62. /**
  63. * 企业名称
  64. **/
  65. @Column(name = "ENTERPRISE_NAME")
  66. @Field(name = "enterpriseName", index = Index.TOKENIZED, store = Store.YES)
  67. private String enterpriseName;
  68. @Column(name = "ENTERPRISE_LOGO")
  69. private String enterpriseLogo = Constants.ENTERPRISE_DEFAULT_PORTAIT; ;// 默认的logo;
  70. /**
  71. * 企业所属行业
  72. **/
  73. @Column(name = "ENTERPRISE_INDUSTRY")
  74. private String enterpriseIndustry;
  75. /**
  76. * 企业性质
  77. **/
  78. @Column(name = "ENTERPRISE_NATURE")
  79. private String enterpriseNature;
  80. /**
  81. * 工作城市,
  82. **/
  83. @Column(name = "LOCATION")
  84. @Field(name = "location", index = Index.TOKENIZED, store = Store.YES)
  85. private String location;
  86. /**
  87. * 学历要求,以“,”分隔的学历id1:大专及以上2:本科及以上3:硕士及以上4:博士
  88. **/
  89. @Field(name = "degree", index = Index.TOKENIZED, store = Store.YES)
  90. @Column(name = "DEGREE")
  91. private String degree;
  92. /**
  93. * 工资
  94. **/
  95. @Column(name = "SALARY")
  96. private String salary;
  97. /**
  98. * 阅读次数
  99. **/
  100. @Column(name = "VIEW_COUNT")
  101. private Integer viewCount = 0;
  102. @Column(name = "DELIVER_COUNT")
  103. private Integer deliverCount = 0;
  104. /**
  105. * 收藏次数
  106. **/
  107. @Column(name = "FAVORITE_COUNT")
  108. private Integer favoriteCount = 0;
  109. /**
  110. * 点赞数量
  111. **/
  112. @Column(name = "LIKE_COUNT")
  113. private Integer likeCount = 0;
  114. /**
  115. * 投递简历数量
  116. **/
  117. @Column(name = "RESUME_COUNT")
  118. private Integer resumeCount = 0;
  119. /**
  120. * 详细工作地址
  121. **/
  122. @Column(name = "ADDRESS")
  123. @Field(name = "address", index = Index.TOKENIZED, store = Store.YES)
  124. private String address;
  125. /**
  126. * hotWeight:热门排行权重.
  127. *
  128. * @since JDK 1.8
  129. */
  130. @Fields({ @Field, @Field(name = "hotWeight", index = Index.UN_TOKENIZED) })
  131. @Column(name = "HOT_WEIGHT")
  132. private Long hotWeight;
  133. /**
  134. * spreadLevel:推广级别,0是没有推广,1是最低级别
  135. *
  136. * @since JDK 1.8
  137. */
  138. @Column(name = "SPREAD_LEVEL")
  139. private Integer spreadLevel = 0;
  140. /**
  141. * invitationLevel:邀约级别,0是没有邀约,1是最低级别
  142. *
  143. * @since JDK 1.8
  144. */
  145. @Column(name = "INVITATION_LEVEL")
  146. private Integer invitationLevel = 0;
  147. /**
  148. * 0:无效1:有效2:举报处理中
  149. **/
  150. @Column(name = "STATUS")
  151. private Integer status = 1;
  152. /**
  153. * 举报ID
  154. **/
  155. @Column(name = "ACCUSATION_ID")
  156. private String accusationId;
  157. /**
  158. * 来源
  159. **/
  160. @Column(name = "SOURCE")
  161. private String source;
  162. @javax.persistence.Transient
  163. private String content;
  164. /**
  165. * 下线时间
  166. **/
  167. @JsonFormat(pattern = "yyyy-MM-dd", timezone = "Asia/Shanghai")
  168. @DateTimeFormat(pattern = "yyyy-MM-dd")
  169. @Temporal(TemporalType.TIMESTAMP)
  170. @Column(name = "OFFLINE_TIME")
  171. protected Date offLineTime;
  172. /**
  173. * 激活时间
  174. **/
  175. @JsonFormat(pattern = "yyyy-MM-dd", timezone = "Asia/Shanghai")
  176. @DateTimeFormat(pattern = "yyyy-MM-dd")
  177. @Temporal(TemporalType.TIMESTAMP)
  178. @Column(name = "ACTIVATE_TIME")
  179. protected Date activateTime;
  180. /**
  181. * 是否加V 0不加V 1加V
  182. **/
  183. @javax.persistence.Transient
  184. private Integer isVerify;
  185. /**
  186. * 是否有圈子的标记
  187. */
  188. // @Field(name = "domainId", index = Index.UN_TOKENIZED, store = Store.YES)
  189. @Column(name = "HAS_DOMAIN")
  190. private Integer hasDomain = 0;
  191. @ManyToMany
  192. @JoinTable(name = "H_REL_JOB_DOMAIN", joinColumns = { @JoinColumn(name = "JOB_ID") }, inverseJoinColumns = { @JoinColumn(name = "DOMAIN_ID") })
  193. private Set<DicJoBDomain> domains;
  194. public String getCarrerId() {
  195. return carrerId;
  196. }
  197. public void setCarrerId(String carrerId) {
  198. this.carrerId = carrerId;
  199. }
  200. public String getTitle() {
  201. return title;
  202. }
  203. public void setTitle(String title) {
  204. this.title = title;
  205. }
  206. public String getCategory() {
  207. return category;
  208. }
  209. public void setCategory(String category) {
  210. this.category = category;
  211. }
  212. public String getEnterpriseCarrerId() {
  213. return enterpriseCarrerId;
  214. }
  215. public void setEnterpriseCarrerId(String enterpriseCarrerId) {
  216. this.enterpriseCarrerId = enterpriseCarrerId;
  217. }
  218. public String getEnterpriseId() {
  219. return enterpriseId;
  220. }
  221. public void setEnterpriseId(String enterpriseId) {
  222. this.enterpriseId = enterpriseId;
  223. }
  224. public String getEnterpriseName() {
  225. return enterpriseName;
  226. }
  227. public void setEnterpriseName(String enterpriseName) {
  228. this.enterpriseName = enterpriseName;
  229. }
  230. public String getEnterpriseIndustry() {
  231. return enterpriseIndustry;
  232. }
  233. public void setEnterpriseIndustry(String enterpriseIndustry) {
  234. this.enterpriseIndustry = enterpriseIndustry;
  235. }
  236. public String getEnterpriseNature() {
  237. return enterpriseNature;
  238. }
  239. public void setEnterpriseNature(String enterpriseNature) {
  240. this.enterpriseNature = enterpriseNature;
  241. }
  242. public String getLocation() {
  243. return location;
  244. }
  245. public void setLocation(String location) {
  246. this.location = location;
  247. }
  248. public String getDegree() {
  249. return degree;
  250. }
  251. public void setDegree(String degree) {
  252. this.degree = degree;
  253. }
  254. public String getSalary() {
  255. return salary;
  256. }
  257. public void setSalary(String salary) {
  258. this.salary = salary;
  259. }
  260. public Integer getViewCount() {
  261. if (viewCount == null) {
  262. return 0;
  263. }
  264. return viewCount;
  265. }
  266. public void setViewCount(Integer viewCount) {
  267. this.viewCount = viewCount;
  268. }
  269. public Integer getFavoriteCount() {
  270. if (favoriteCount == null) {
  271. return 0;
  272. }
  273. return favoriteCount;
  274. }
  275. public void setFavoriteCount(Integer favoriteCount) {
  276. this.favoriteCount = favoriteCount;
  277. }
  278. public Integer getDeliverCount() {
  279. if (deliverCount == null) {
  280. return 0;
  281. }
  282. return deliverCount;
  283. }
  284. public void setDeliverCount(Integer deliverCount) {
  285. this.deliverCount = deliverCount;
  286. }
  287. public Integer getLikeCount() {
  288. if (likeCount == null) {
  289. return 0;
  290. }
  291. return likeCount;
  292. }
  293. public void setLikeCount(Integer likeCount) {
  294. this.likeCount = likeCount;
  295. }
  296. public Integer getResumeCount() {
  297. if (resumeCount == null) {
  298. return 0;
  299. }
  300. return resumeCount;
  301. }
  302. public void setResumeCount(Integer resumeCount) {
  303. this.resumeCount = resumeCount;
  304. }
  305. public String getAddress() {
  306. return address;
  307. }
  308. public void setAddress(String address) {
  309. this.address = address;
  310. }
  311. public Long getHotWeight() {
  312. if (hotWeight == null) {
  313. return 0L;
  314. }
  315. return hotWeight;
  316. }
  317. public void setHotWeight(Long hotWeight) {
  318. this.hotWeight = hotWeight;
  319. }
  320. public Integer getSpreadLevel() {
  321. return spreadLevel;
  322. }
  323. public void setSpreadLevel(Integer spreadLevel) {
  324. this.spreadLevel = spreadLevel;
  325. }
  326. public Integer getInvitationLevel() {
  327. return invitationLevel;
  328. }
  329. public void setInvitationLevel(Integer invitationLevel) {
  330. this.invitationLevel = invitationLevel;
  331. }
  332. public String getSource() {
  333. return source;
  334. }
  335. public void setSource(String source) {
  336. this.source = source;
  337. }
  338. public Integer getStatus() {
  339. return status;
  340. }
  341. public void setStatus(Integer status) {
  342. this.status = status;
  343. }
  344. public String getAccusationId() {
  345. return accusationId;
  346. }
  347. public void setAccusationId(String accusationId) {
  348. this.accusationId = accusationId;
  349. }
  350. public String getContent() {
  351. return content;
  352. }
  353. public void setContent(String content) {
  354. this.content = content;
  355. }
  356. public String getEnterpriseLogo() {
  357. return enterpriseLogo;
  358. }
  359. public void setEnterpriseLogo(String enterpriseLogo) {
  360. this.enterpriseLogo = enterpriseLogo;
  361. }
  362. public Date getOffLineTime() {
  363. return offLineTime;
  364. }
  365. public void setOffLineTime(Date offLineTime) {
  366. this.offLineTime = offLineTime;
  367. }
  368. public Date getActivateTime() {
  369. return activateTime;
  370. }
  371. public void setActivateTime(Date activateTime) {
  372. this.activateTime = activateTime;
  373. }
  374. /**
  375. * @see java.lang.Object#hashCode()
  376. */
  377. @Override
  378. public int hashCode() {
  379. final int prime = 31;
  380. int result = 1;
  381. result = prime * result + ((this.id == null) ? 0 : id.hashCode());
  382. return result;
  383. }
  384. /**
  385. * @see java.lang.Object#equals(java.lang.Object)
  386. */
  387. @Override
  388. public boolean equals(Object obj) {
  389. if (this == obj)
  390. return true;
  391. if (obj == null)
  392. return false;
  393. if (getClass() != obj.getClass())
  394. return false;
  395. BaseJob other = (BaseJob) obj;
  396. if (id == null) {
  397. if (other.id != null)
  398. return false;
  399. } else if (!id.equals(other.id))
  400. return false;
  401. return true;
  402. }
  403. public Integer getIsVerify() {
  404. return isVerify;
  405. }
  406. public String getSpiderJobId() {
  407. return spiderJobId;
  408. }
  409. public void setSpiderJobId(String spiderJobId) {
  410. this.spiderJobId = spiderJobId;
  411. }
  412. public void setIsVerify(Integer isVerify) {
  413. this.isVerify = isVerify;
  414. }
  415. public Integer getHasDomain() {
  416. return hasDomain;
  417. }
  418. public void setHasDomain(Integer hasDomain) {
  419. this.hasDomain = hasDomain;
  420. }
  421. public Set<DicJoBDomain> getDomains() {
  422. return domains;
  423. }
  424. public void setDomains(Set<DicJoBDomain> domains) {
  425. this.domains = domains;
  426. }
  427. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注