猿9527 2018-09-14 09:22 采纳率: 0%
浏览 338
已结题

如何将Hibernate一对多双向自关联关系从主键中剥离出来

package cn.com.qycti.callcenter.platform.domain;

import java.util.Date;
import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.OrderBy;
import javax.persistence.Table;
import javax.persistence.Transient;

import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;

import com.acooly.core.common.domain.AbstractEntity;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;

@Entity
@Table(name = "SYS_AREA")
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
@JsonIgnoreProperties(value = {"parent"}, ignoreUnknown = true)
public class Area extends AbstractEntity {
private static final long serialVersionUID = -6976828974218421186L;

/** 主键ID */
private Long id;

/** 父ID */
private Area parent;

/** 公司ID */
private Long cid;

/** 编码 */
private String code;

/** 名称 */
private String name;

/** 单层排序时间 */
private Date orderDate = new Date();

/** 备注 */
private String comments;

private Set<Area> children;

//导入时候excel设置的父级id
private String mypid;
//导入时候excel设置的id
private String myid;

private String zipcode;

@Id 
@GeneratedValue
public Long getId(){
    return this.id;
}

public void setId(Long id){
    this.id = id;
}
public Long getCid(){
    return this.cid;
}

public void setCid(Long cid){
    this.cid = cid;
}
public String getCode(){
    return this.code;
}

public void setCode(String code){
    this.code = code;
}
public String getName(){
    return this.name;
}

public void setName(String name){
    this.name = name;
}
public Date getOrderDate(){
    return this.orderDate;
}

public void setOrderDate(Date orderDate){
    this.orderDate = orderDate;
}
public String getComments(){
    return this.comments;
}

public void setComments(String comments){
    this.comments = comments;
}

@JoinColumn(name = "PARENTID")
@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.PERSIST)
public Area getParent() {
    return parent;
}

public void setParent(Area parent) {
    this.parent = parent;
}

@OrderBy("orderDate desc")
@OneToMany(mappedBy = "parent", fetch = FetchType.EAGER, cascade = {CascadeType.REFRESH, CascadeType.MERGE})
public Set<Area> getChildren() {
    return children;
}

public void setChildren(Set<Area> children) {
    this.children = children;
}

@Transient
public String getMypid() {
    return mypid;
}

public void setMypid(String mypid) {
    this.mypid = mypid;
}

@Transient
public String getMyid() {
    return myid;
}

public void setMyid(String myid) {
    this.myid = myid;
}

public String getZipcode() {
    return zipcode;
}

public void setZipcode(String zipcode) {
    this.zipcode = zipcode;
}

}

现在这种设置是将parentId与主键ID是自关联,现在需要将parentId与code进行关联,如何修改代码?

  • 写回答

1条回答 默认 最新

  • dabocaiqq 2018-09-14 15:48
    关注
    评论

报告相同问题?

悬赏问题

  • ¥20 蓝牙耳机怎么查看日志
  • ¥15 Fluent齿轮搅油
  • ¥15 八爪鱼爬数据为什么自己停了
  • ¥15 交替优化波束形成和ris反射角使保密速率最大化
  • ¥15 树莓派与pix飞控通信
  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏