2 qq 38181348 qq_38181348 于 2017.09.20 10:36 提问

一张表能否 many to one 自己

数据库的表有个parent_id字段,存的本表的id字段,
但是我页面显示需要再用这个id查询出本表对应id的name属性,
请问能否在实体类配置多对一来实现。
贴一下实体类代码(parent字段对应的数据库的parent_**id)

@Entity
@Table(name="t_department")
public class EmpBean implements java.io.Serializable{
private static final long serialVersionUID = 1L;
@Id
@GenericGenerator(name="idGenerator", strategy="uuid")
@GeneratedValue(generator="idGenerator")
private String id;
private String department_num;
private String department_name;
private String abridge;
private String department_tel;
private String department_property;
private String department_duty_person;
private String department_duty;
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="parent_id")
private EmpBean parent;
private Date create_date;

1个回答

sanjuejianke
sanjuejianke   2017.09.20 11:16
已采纳

当然可以了,同样都属于Person,多个儿子对应一个爸爸不是很正常吗?

qq_38181348
qq_38181348 谢啦,已解决
2 个月之前 回复
sanjuejianke
sanjuejianke 回复无聊望见了犹豫: 不用这么麻烦吧,你只要查询某个EmpBean就可以,然后你如果要获取查询出来的这个EmpBean的p6arent,因为你用了LAZY的加载方式,所有你需要去get一下他的parent的属性,比如bean.getParent().getDepartment_name(),然后它就回去自动查询parent的所有字段了
2 个月之前 回复
qq_38181348
qq_38181348 回复sjjk: @ManyToOne(cascade=CascadeType.ALL,fetch=FetchType.LAZY) @JoinColumn(name="parent_id")加在get方法上。页面能用El表达式${emp.parent.id}打印出ID,打印名字就报错,应该是HQL语句的问题,我改成:select e,d from EmpBean as e inner join EmpBean as d on d.parent_id=e.id where 1=1 <#if id??> and e.id !=:id </#if> <#if department_name??> and e.department_name like :department_name </#if> <#if orderByName??> order by department_name <#else> order by id </#if>这样后HQL就报错。
2 个月之前 回复
sanjuejianke
sanjuejianke 回复无聊望见了犹豫: 什么错?你把@ManyToOne(fetch=FetchType.LAZY) @JoinColumn(name="parent_id")这个加到对应get方法上看看
2 个月之前 回复
qq_38181348
qq_38181348 那请问具体如何操作,我这里老是报错
2 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片