re: XP SP2 装IIS ASSA 2007-06-27 09:58
DSFDSGVFDSG
re: XP SP2 装IIS ASSA 2007-06-27 09:58
GFDSGFDGD
re: XP SP2 装IIS ASSA 2007-06-27 09:57
DFDF
有没有设计的档,或是详细的注释,还有就要增加少而精的例子?
谢谢解答,请把cvs上的bug修正
if (andParameters != null) {
QueryParam innerQueryParam = new QueryParam();
for (String key : notParameters.keySet()) {
.....
}
}
queryParam.andParameter(innerQueryParam);
}
if (orParameters != null) {
QueryParam innerQueryParam = new QueryParam();
for (String key : notParameters.keySet()) {
... }
queryParam.orParameter(innerQueryParam);
}
把这段中的notParameters.keySet() 改为相应的
andParameters.keySet())
orParameters.keySet()
为什么id和salary丢失了?
--抱歉,这里遗漏了
DefaultActionSupport是旧的版本,QueryWebUtils.java是tiger中重构过的版本,解析的方法是一致的,最新的以tiger版本为准
notParameters.keySet(); 这里是bug,谢谢指正,马上修正
这里的用法仅是为了允许jsp的参数带有简单逻辑组合,可以自动处理为service可识别的参数类型
代码QueryWebUtils.java中如下参数
age,>,20
[and:a]id,>,100
[and:a]id,!=,200
[or:or_b]salary,>,200
[or:or_b]salary,<,400
[or:and_a]age,=,60
[or:and_a]title,=,manager
[not:or_a]age,=,30
[not:or_a]title,=,cto
生成sql:(age>20 and (age=60 or title=cto)) or (age=60 or title=cto) and not (age=60 or title=cto)
为什么id和salary丢失了?
而在DefaultActionSupport中如下参数
age,>,20
[and:a]id,>,100
[and:a]id,!=,200
[or:b]salary,>,200
[or:b]salary,<,400
[or:a]age,=,60
[or:a]title,=,manager
then the generated sql like this:
age > 20 and (id > 100 and id != 200) or (salary > 200 and salary < 400) or (age = 60 and title = manager)
两者解析的方法有什么不同?
另外在public static QueryParam generateQueryParam(String[] names, String[] operators, Object[] values)
中有bug:判断andParameters != null却取得 notParameters.keySet();
if (andParameters != null) {
QueryParam innerQueryParam = new QueryParam();
for (String key : notParameters.keySet()) {
……
}
}
麻烦你解答一下,另外如果方便的话,说明一下参数的含义,从jsp--〉action--〉service有什么不同之处?谢谢你
将例程发布到tomcat的时候报这个错,不知道是什么原因?
Installing web application at context path /bbaeg from URL file:D:\tomcat5\webapps\bbaeg
2006-05-29 11:02:21,156 ERROR [opensymphony.webwork.config.DefaultConfiguration] Could not find application.properties. Skipping
根据MSN的交流,上面的情况是没有正确引用关联表属性,这也是hibernate使用者容易犯的错误。
举个hsql的例子,假设child:parent关系多对一,id是主键
select from Child child where child.parent.id = 1 正确
select from Child child where child.parent.name = 'name' 错误
select from Child child left join child.parent p where p.name = 'name' 正确
多(child)这边本来就记录了一(parent)的主键,parent的时候id是可以取得的,而hibernate多对一默认关联使用代理Proxy,这个parent的代理就是先拿到id作代理准备的,parent.id就取到了,但是parent的其它属性就需要显式连接才可以取到。
同理,相应的bba96的代码就是
parent.id 正确
parent.name 错误
parent:p.name 正确
to:李李 我在使用bba96的时候,对于父子关系的查询,出现了异常,could not reslove property ,用到了属性的别名,我在线等你的回答!
俺是一个新手,能否介绍一下项目中RBAC的设计思路
或者告诉这方面的网上参考资料,万分感谢。
bba96使用LGPL发布,跟hibernate一样的。
谢谢你的回答,我准备在项目中用你的代码,不知有什么限制?
可以的
我会给findByHQL加上names, values的参数,就可以调用了,但是这样的调用受hibernate的一些限制,参考
http://www.hibernate.org/hib_docs/v3/reference/en/html_single/#sp_query
确实想不受限制,也可直接使用session.connection()获得jdbc connection来调用
CVS上的CoreEntityManager有public Object getCurrentSession()的方法,类型转化为ore.hibenate.Session即可,缺省此方法不在EntityManager中提供。
谢谢你的关注,请多提意见
内部就是调用hibernate的projections.setProperty,hibernate支持什么结构就是什么结构
projections.setProperty(new String[]{"id","itemcode","content"});
输出页面上怎么写?
谢谢评价,提到的缺陷在cvs上已经有部分修正了。主要是action层的一些修正,例如web参数安全。支持多个分页在考虑中,关于service安全更请具体一些,service是设计为允许extend的,另,目前将会基于aop加入权限控制。最近忙于一个项目的升级,这方面时间用少了很多啊
bba96缺陷:
1、没有数据安全
2、不能同时列出多个分页表格
3、没有service安全
bba96思路不错,敬佩作者 李李
现在cvs上的也是比较稳定的,暂时没有发现bug。几个项目从1.0开始都在用
CVS上已加入前台传入的参数校验以及额外增加参数的功能,都可以通过配置properties文件实现,增加了安全性及灵活性
不太明白,页面显示有什么问题?Set一样可以iterator
关联查询时,如果两个实体是many-to-many,在主控方查出来后,怎么显示出来?因为在many的一方有Set集合,在页面显示有问题?
上面有写,MSN: hotmail的帐号scorpio_leon
用CVS上的吧,现在release的只支持Long的主键,CVS上的去掉了这个限制
有问题可以加我的MSN或者到这里讨论
http://forum.bba96.com/forum.jspa?forumID=29&start=0
还将加入权限控制的模块,由于一直在赶项目,还来不及把权限发布,因为还有一些需要调整的代码。
好!我就准备在这个项目中使用这个框架。
有什么问题,还望多指教。
find(Cat.class, new String[]{"name", "kittens:kitten.name"}, new String[]{"like", "like"}, new Object[]{"F%", "F%"})
这是action/service的写法,若你用webwork,框架中支持直接从jsp解析参数,就比较方便了。
冒号后表示别名,还可以继续进行关联查询如 kittens:kitten.propeties:property.name,没有层次的限制。
能否实现在互相关联的实体间的查询,
比如hibernate参考文档中的例子,怎么能在这个框架中实现:
createCriteria(Cat.class)
.add( Restrictions.like("name", "F%")
.createCriteria("kittens")
.add( Restrictions.like("name", "F%")
.list();
The operator can only be set 'is' or '=' or 'is not' or '!=' when value is NULL!"
这个异常就是告诉你现在的值是null,对应的操作符只能是=, !=, is, is not。
因为查询的字段有可能是对象,null是有意义,所以要忽略view传过来的参数,应该由Action这层处理,缺省的页面传递过来,有参数名的值,没填的时候就是空,因此在我的webwork action中对空串作了忽略处理,同时还已经作了string到一般对象的转换,你的jsp中可以这样写endTime_Date。以下这一段通过自动处理都能省掉,你可以参考一下,用struts也能实现。
String startTime = (String) tradeInfoForm.get("startTime");
String endTime = (String) tradeInfoForm.get("endTime");
String tradeType = (String) tradeInfoForm.get("tradeType");
String terminalId = (String) tradeInfoForm.get("terminalId");
Date startTime2 = null;
Date endTime2 = null;
try {
if (startTime != null && startTime.trim().length() > 0) {
startTime2 = DateUtil.StringToDate(startTime);
}
if (endTime != null && endTime.trim().length() > 0) {
endTime2 = DateUtil.StringToDate(endTime);
}
} catch (ParseException e) {
e.printStackTrace();
}
String[] names = new String[] { startTime, endTime, tradeType,
terminalId };
String[] operators = new String[] { QueryParam.OPERATOR_GT,
QueryParam.OPERATOR_LT, QueryParam.OPERATOR_EQ,
QueryParam.OPERATOR_EQ };
Object[] values = new Object[] { startTime2, endTime2, tradeType,
terminalId };
补充,简单的说就是,通过上面的代码,我可以查询我想要的结果,我不用对查询条件进行排列组合,不知道可不可以,我看了一下源码,好像是可以,但是上面的语句为什么是错误的?
李李 :你好,我现在在写代码的时候碰到了一些问题:1,我做查询的时候,假设字段的值都不填,或者填的不全,或者都填写,你的代码好像不能自己来判断?还是要我们自己来if-else?比如下面的代码:
DynaActionForm tradeInfoForm = (DynaActionForm) form;
String startTime = (String) tradeInfoForm.get("startTime");
String endTime = (String) tradeInfoForm.get("endTime");
String tradeType = (String) tradeInfoForm.get("tradeType");
String terminalId = (String) tradeInfoForm.get("terminalId");
Date startTime2 = null;
Date endTime2 = null;
try {
if (startTime != null && startTime.trim().length() > 0) {
startTime2 = DateUtil.StringToDate(startTime);
}
if (endTime != null && endTime.trim().length() > 0) {
endTime2 = DateUtil.StringToDate(endTime);
}
} catch (ParseException e) {
e.printStackTrace();
}
String[] names = new String[] { startTime, endTime, tradeType,
terminalId };
String[] operators = new String[] { QueryParam.OPERATOR_GT,
QueryParam.OPERATOR_LT, QueryParam.OPERATOR_EQ,
QueryParam.OPERATOR_EQ };
Object[] values = new Object[] { startTime2, endTime2, tradeType,
terminalId };
int total = entityManager.countAll(TradeInfo.class,names,operats,values);
logger.debug("TradeInfo TotalCount " + total);
List result = entityManager.findAll(TradeInfo.class,names,operats,values);
如果不填的话,出现"The operator can only be set 'is' or '=' or 'is not' or '!=' when value is NULL!"异常,
host:cvs.dev.java.net
repository path:/cvs
user:guest
password:(空)
然后
check out bba96
cvs username/pwd serverAdd?
我在用的过程中,有一个问题,好像不能用String作为主键,怎么办?
DefaultActionSupport一部分是简化webwork持久化操作,另一部分就是解析jsp或者properties传递的参数,后面这部分是类似的,直接就可以用。我的框架已经应用在我以及其他用户开发的很多工程中,你可以放心采用,建议取cvs上最新的。
谢谢你的回答,在struts中BaseAction的代码是不是和你的代码中DefaultActionSupport的代码有相似的地方(ww我不熟悉),我现在的工程底层的想采用你的框架,所以要问的详细一些。
这个很容易实现,只要有关联,bba96在动态产生查询语句方面比较强大的,特别是方便的别名无限关联,以及复杂的逻辑关系组合。具体看QueryObject,QueryParam。
不过暂时还没有struts整合的代码,而且以后struts ti将以webwork为核心,所以我也不打算为现有的struts做整合了,所谓不能整合只是不方便jsp调用,但是action层是直接支持的,不须特别整合。
比如有一复杂的查询,要求动态产生查询语句(不仅仅是字段的值变化,字段也产生变化),不知道能否完成?还有你现在的web端用的是ww,能否用Struts?如果你有Struts整合的代码,能否给我一份?Email:xuruchao8088@yahoo.com.cn
HQL应该跟Critiera+Projections比较,虽然我没有仔细比较过,不过没感觉HQL强大多少?我看Critiera+Projections都能实现嘛,或者你举个例子让我看看。 MSN: hotmail的帐号scorpio_leon
谢谢你的回答,那么你的框架为什么不用HQL来封装,我觉的要灵活,强大一些!
除非Critiera支持,目前不能,需要对象间有关联,因为内部还是Critiera得query方法。