问大家一个问题:jpa一对多双向自身关联关系怎么配制啊?比如分类
bean是这样写的:
package com.cms.entity;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.Column;
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.Transient;
import com.cms.common.hibernate.HibernateTree;
@Entity
public class Channel implements HibernateTree<Integer>,Serializable{
private static final long serialVersionUID = 1L;
private Integer id;
private String name;
private Channel parent;
private List<Channel> children = new ArrayList<Channel>();
private Integer lft;
private Integer rgt;
@Id
@GeneratedValue
@Column(name="channel_id")
public Integer getId() {
return id;
}
@Column(name="lft")
public Integer getLft() {
return lft;
}
@Column(name="channel_name")
public String getName() {
return name;
}
@Column(name="rgt")
public Integer getRgt() {
return rgt;
}
@ManyToOne(targetEntity=Channel.class)
@JoinColumn(name="channel_parentid")
public Channel getParent() {
return parent;
}
//@Transient
@OneToMany(fetch = FetchType.LAZY, mappedBy = "parent")
public List<Channel> getChildren() {
return children;
}
@Transient
//hibernateTree重写不参与持久化
public String getLftName() {
return DEF_LEFT_NAME;
}
@Transient
//hibernateTree重写
public Integer getParentId() {
Channel parent = getParent();
if (parent != null) {
return parent.getId();
} else {
return null;
}
}
@Transient
//hibernateTree重写
public String getParentName() {
return "channel_parentid";
}
@Transient
//hibernateTree重写
public String getRgtName() {
return DEF_RIGHT_NAME;
}
@Transient
//hibernateTree重写
public String getTreeCondition() {
return null;
}
public void setChildren(List<Channel> children) {
this.children = children;
}
public void setId(Integer id) {
this.id = id;
}
public void setLft(Integer lft) {
this.lft=lft;
}
public void setName(String name) {
this.name = name;
}
public void setParent(Channel parent) {
this.parent = parent;
}
public void setRgt(Integer rgt) {
this.rgt=rgt;
}
}
<#if list??>
<#list list as channel>
<tr>
<td>${channel.id}</td>
<td>${channel.name}</td>
<td>${channel.parent.id}</td>
<td>${channel.lft}</td>
<td>${channel.rgt}</td>
</tr>
</#list>
</#if>
我现在是这样写的,在模板循环那个list的时候提示channel.parent is undefined找不到
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
应该加下判断
<#if list??>
<#list list as channel>
<tr>
<td>${channel.id}</td>
<td>${channel.name}</td>
<td>${(channel.parent.name)!"hasn't parent!"}</td>
<td>${channel.lft}</td>
<td>${channel.rgt}</td>
</tr>
</#list>
</#if>