hibernate annotation树映射及操作?新手求助!

sdc21 2011-05-20 12:26:55
开发框架:hibernte3 struts2 spring2.5(mysql)
1)model层:
package com.oa.model;

import java.util.Set;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;

@Entity
@Table(name="t_organization")
public class Organization {
private int id;
private String name;
private String sn;
private String description;
private Organization parent;
private Set<Organization> children;

@Id
@GeneratedValue
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSn() {
return sn;
}
public void setSn(String sn) {
this.sn = sn;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
@ManyToOne
@JoinColumn(name="pid")
public Organization getParent() {
return parent;
}
public void setParent(Organization parent) {
this.parent = parent;
}
@OneToMany(mappedBy="parent")
public Set<Organization> getChildren() {
return children;
}
public void setChildren(Set<Organization> children) {
this.children = children;
}
}

2)Dao层:
package com.oa.dao;

import java.util.List;

import com.oa.util.PagerModel;
import com.oa.model.Organization;

public interface OrgDao {

public void addOrg(Organization org,int parentId);

public void delOrg(int orgId);

public void updateOrg(Organization org,int parentId);

public Organization findOrg(int orgId);

public PagerModel searchOrgs(int parentId);
}

3)Dao实现层:
package com.oa.dao.impl;

import java.util.List;

import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.stereotype.Component;

import com.oa.util.AbstractManager;
import com.oa.util.PagerModel;
import com.oa.dao.OrgDao;
import com.oa.util.SystemException;
import com.oa.model.Organization;

@Component("orgDao")
public class OrgDaoImpl extends AbstractManager implements OrgDao {

private HibernateTemplate hibernateTemplate;

public HibernateTemplate getHibernateTemplate() {
return hibernateTemplate;
}

public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
this.hibernateTemplate = hibernateTemplate;
}

public void addOrg(Organization org, int parentId) {
if(parentId != 0){
org.setParent(
findOrg(parentId)
);
}
this.hibernateTemplate.save(org);

org.setSn(
org.getParent() == null ?
(""+org.getId()) :
(org.getParent().getSn()+"_"+org.getId())
);

this.hibernateTemplate.update(org);
}

public void delOrg(int orgId) {
Organization org = (Organization)findOrg(orgId);
if(org.getChildren().size() > 0){
//throw new RuntimeException("机构【"+org.getName()+"】下面存在子机构信息,不允许删除!");
throw new SystemException("org.suborg.not.null",org.getName(),"机构【"+org.getName()+"】下面存在子机构信息,不允许删除!");
}
String hql = "select count(*) from Person p where p.org.id = ? ";
Long size = (Long)this.hibernateTemplate.getSessionFactory().getCurrentSession().createQuery(hql).setParameter(0, orgId).uniqueResult();
if(size > 0){
throw new SystemException("机构【"+org.getName()+"】下面存在人员信息,不允许删除!");
//throw new RuntimeException("机构【"+org.getName()+"】下面存在人员信息,不允许删除!");
}
this.hibernateTemplate.delete(org);
}

public Organization findOrg(int orgId) {
return (Organization)this.hibernateTemplate.load(Organization.class, orgId);
}

public PagerModel searchOrgs(int parentId) {

String selectHql = "select o from Organization o where o.parent is null";
if(parentId != 0){
selectHql = "select o from Organization o where o.parent.id = "+parentId;
}

return searchPaginated(selectHql);
}

public void updateOrg(Organization org, int parentId) {
if(parentId != 0){
org.setParent(
findOrg(parentId)
);
}
this.hibernateTemplate.update(org);
}

}

怎么用junit或者其他测试Dao方法?
...全文
89 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
sdc21 2011-05-26
  • 打赏
  • 举报
回复
[Quote=引用楼主 sdc21 的回复:]
开发框架:hibernte3 struts2 spring2.5(mysql)
1)model层:
package com.oa.model;

import java.util.Set;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persisten……
[/Quote]多谢楼上意见,测试可以了,就是用ClassPathXmlApplicationContext读取文件来getBenan()
危险的大猫 2011-05-20
  • 打赏
  • 举报
回复
在测试方法中手动初始化spring 容器,从容器中获得你的dao
手动初始化应该会把

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧