域实体类:自我引用关系映射,即域可以有多个子域@Entity
@Table(name = "itsc_domain_info")
public class ItscDomainInfo implements Serializable { private static final long serialVersionUID = 1L; public final static String PROPERTY_ORG_NAME = "domainName"; public final static String PROPERTY_PARENT_ORG = "parentDomain";
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "domain_id")
private Integer domainId; @Column(name = "domain_name")
private String domainName; @Column(name = "domain_type")
private int domainType; @Column(name = "domain_desc")
private String domainDesc; @ManyToOne
@JoinColumn(name = "parent_domain", referencedColumnName = "domain_id")
private ItscDomainInfo parentDomain; @OneToMany(mappedBy = "parentDomain", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
private List<ItscDomainInfo> childDomains; public ItscDomainInfo() {
}
......
}用户实体类:用户与域单向一对多映射@Entity
@Table(name = "itsc_user_info")
public class ItscUserInfo implements Serializable { private static final long serialVersionUID = 1L; public static final String PROPERTY_USER_NAME = "userName"; public static final String PROPERTY_USER_ROLEID = "roleInfo.roleId"; @Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "user_id")
private Integer userId; @Column(name = "user_name", updatable = false)
private String userName; @Column(name = "user_pwd")
private String userPwd; @Column(name = "user_telephone")
private String userTelephone; @Column(name = "user_position")
private String userPosition; @ManyToOne
@JoinColumn(name = "user_domain", referencedColumnName = "domain_id")
private ItscDomainInfo domainInfo;
.....
}测试数据:新建一个域A,再建两个子域B,C;创建一个用户a,让用户a所属的域为域A,即他的user_domain为域A的domain_id测试DAO接口,查询用户a,结果得到两个用户a,我想应该自我映射的问题,但是不知道该如何处理,哪位给诊断一下?
@Table(name = "itsc_domain_info")
public class ItscDomainInfo implements Serializable { private static final long serialVersionUID = 1L; public final static String PROPERTY_ORG_NAME = "domainName"; public final static String PROPERTY_PARENT_ORG = "parentDomain";
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "domain_id")
private Integer domainId; @Column(name = "domain_name")
private String domainName; @Column(name = "domain_type")
private int domainType; @Column(name = "domain_desc")
private String domainDesc; @ManyToOne
@JoinColumn(name = "parent_domain", referencedColumnName = "domain_id")
private ItscDomainInfo parentDomain; @OneToMany(mappedBy = "parentDomain", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
private List<ItscDomainInfo> childDomains; public ItscDomainInfo() {
}
......
}用户实体类:用户与域单向一对多映射@Entity
@Table(name = "itsc_user_info")
public class ItscUserInfo implements Serializable { private static final long serialVersionUID = 1L; public static final String PROPERTY_USER_NAME = "userName"; public static final String PROPERTY_USER_ROLEID = "roleInfo.roleId"; @Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "user_id")
private Integer userId; @Column(name = "user_name", updatable = false)
private String userName; @Column(name = "user_pwd")
private String userPwd; @Column(name = "user_telephone")
private String userTelephone; @Column(name = "user_position")
private String userPosition; @ManyToOne
@JoinColumn(name = "user_domain", referencedColumnName = "domain_id")
private ItscDomainInfo domainInfo;
.....
}测试数据:新建一个域A,再建两个子域B,C;创建一个用户a,让用户a所属的域为域A,即他的user_domain为域A的domain_id测试DAO接口,查询用户a,结果得到两个用户a,我想应该自我映射的问题,但是不知道该如何处理,哪位给诊断一下?
// log.debug("this.objectClass:" + this.objectClass);
detachedCriteria = detachedCriteria.add(Expression.eq(keyName, key));
List<T> list = this.getHibernateTemplate().findByCriteria(
detachedCriteria);结果list出现两个实体