import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.bean.copier.CopyOptions;
import com.dcits.base.BaseEntity;
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import javax.persistence.*;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
* @date 2021-05-27
**/
@Entity
@Getter
@Setter
@Table(name = "sys_user")
public class SysUser extends BaseEntity implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
@ApiModelProperty(value = "主键")
private Long id;
/**
* 通过mappedBy指定父项,查询子项
*/
@OneToMany(mappedBy = "parent")
@JsonIgnore
private List<SysUser> child;
@Column(name = "parent_id")
@ApiModelProperty(value = "父主键")
private Long parentId;
/**
* 配置字段parent_id关联主键(默认),查询父项
* 可以用referencedColumnName指定关联的字段
*/
@ManyToOne
@JoinColumn(name = "parent_id", insertable = false, updatable = false)
private SysUser parent;
}
参考以上配置,可以实现自关联。
注意:
使用lombok的@Data对以上实体进行注解时,查询可能出现栈溢出异常,原因是@Data对toString方法进行重写,造成反复调用出现栈溢出异常,把@Data替换成@Getter@Setter即可。