`
hanjiangit
  • 浏览: 179388 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

springside的filter查询

阅读更多

在做一个有关联关系的User,Department两个对象的查询时,出了点问题。

这两个对象是many-to-one关系,先贴两个对象的实体类代码。

Department.java

@OneToMany(cascade =
	{ CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REMOVE, CascadeType.REFRESH }, fetch = FetchType.LAZY, mappedBy = "department")
	public Set<User> getUsers()
	{
		return users;
	}

  User.java 

@ManyToOne(cascade =	{ CascadeType.REFRESH, CascadeType.MERGE }, optional = false)	
@JoinColumn(name = "depa_Id")
	public Department getDepartment()
	{
		return department;
	}

 情况是一个界面 左边是个Department的树,右边是两个tabpanel:点击树节点更改两个tabpanel里的内容两个tabpanel分别是user,department。贴出JavaScript的激发事件代码;

function activate_view_cp(_obj){
		if(_obj.getId()=='child-tab1'){
			if(parentId == null)
			{
				document.getElementById('center_iframe').src="./department.action";
			}
			else
			{
				document.getElementById('center_iframe').src="./department.action?filter_EQL_parent_Id="+parentId;
			}
 		}else if(_obj.getId()=='child-tab2'){
 			if(parentId == null)
 			{
 	 			document.getElementById('center_iframe').src="./user.action";
 	 		}
 			else
 			{
 				document.getElementById('center_iframe').src="./user.action?filter_EQL_department.id="+parentId;
 	 		}
 		}
 	}

 点击部门的tabPanel时候的uri是:  ./department.action?filter_EQL_parent_Id="+parentId 。用户的tabPanel的uri是:./user.action?filter_EQL_department.id="+parentId 。注意这个地方department.id 实体属性对象的id !filter支持这样 让我太惊讶了 呵呵。省了好多事。

我刚开始的时候写成这样:./user.action?filter_EQL_depa_Id="+parentId   一直报找不到属性错误。

 

 

我用的是springside3.1.4版本本来他的filter查询是没有EQL,EQLI等。是我后来加的。其实也很简单只需要在两个类里修改一点代码就可以了

在 org.springside.modules.orm.PropertyFilter里增加定义。

在org.springside.modules.orm.hibernate.HibernateDao的buildPropertyFilterCriterion(final String propertyName, final Object value, final MatchType matchType)方法里增加处理就行了。ok

 

分享到:
评论
1 楼 木叶之舟 2011-10-27  
我这里有个疑问,就是我想通过拦截外键的属性,该怎样实现呢?
比如department表下有一个属性departmName
是不是可以通过这样
/user.action?filter_EQL_department.departmName="+departmentName
来拦截呢?

相关推荐

Global site tag (gtag.js) - Google Analytics