即使是文本編輯器也很少見(jiàn)用記事本來(lái)寫(xiě)的,效率不高
推薦高效的方法,用UltraEdit,F(xiàn)ile/文件-->Convert/轉(zhuǎn)換 這里你想怎么轉(zhuǎn)都可以
挺好的,提個(gè)建議
unIncludeRegexString
可以改為
excludeRegexString
為什么id和salary丟失了?
--抱歉,這里遺漏了
DefaultActionSupport是舊的版本,QueryWebUtils.java是tiger中重構(gòu)過(guò)的版本,解析的方法是一致的,最新的以tiger版本為準(zhǔn)
notParameters.keySet(); 這里是bug,謝謝指正,馬上修正
這里的用法僅是為了允許jsp的參數(shù)帶有簡(jiǎn)單邏輯組合,可以自動(dòng)處理為service可識(shí)別的參數(shù)類(lèi)型
根據(jù)MSN的交流,上面的情況是沒(méi)有正確引用關(guān)聯(lián)表屬性,這也是hibernate使用者容易犯的錯(cuò)誤。
舉個(gè)hsql的例子,假設(shè)child:parent關(guān)系多對(duì)一,id是主鍵
select from Child child where child.parent.id = 1 正確
select from Child child where child.parent.name = 'name' 錯(cuò)誤
select from Child child left join child.parent p where p.name = 'name' 正確
多(child)這邊本來(lái)就記錄了一(parent)的主鍵,parent的時(shí)候id是可以取得的,而hibernate多對(duì)一默認(rèn)關(guān)聯(lián)使用代理Proxy,這個(gè)parent的代理就是先拿到id作代理準(zhǔn)備的,parent.id就取到了,但是parent的其它屬性就需要顯式連接才可以取到。
同理,相應(yīng)的bba96的代碼就是
parent.id 正確
parent.name 錯(cuò)誤
parent:p.name 正確
bba96使用LGPL發(fā)布,跟hibernate一樣的。
可以的
我會(huì)給findByHQL加上names, values的參數(shù),就可以調(diào)用了,但是這樣的調(diào)用受hibernate的一些限制,參考
http://www.hibernate.org/hib_docs/v3/reference/en/html_single/#sp_query
確實(shí)想不受限制,也可直接使用session.connection()獲得jdbc connection來(lái)調(diào)用
CVS上的CoreEntityManager有public Object getCurrentSession()的方法,類(lèi)型轉(zhuǎn)化為ore.hibenate.Session即可,缺省此方法不在EntityManager中提供。
謝謝你的關(guān)注,請(qǐng)多提意見(jiàn)
這是我在Blogjava看到最好看的頁(yè)面風(fēng)格,呵呵
re: 做這一行的人是這樣的?! 李李 2006-03-03 15:06
有趣,支持
這個(gè)是一定要發(fā)給MM看滴
內(nèi)部就是調(diào)用hibernate的projections.setProperty,hibernate支持什么結(jié)構(gòu)就是什么結(jié)構(gòu)
謝謝評(píng)價(jià),提到的缺陷在cvs上已經(jīng)有部分修正了。主要是action層的一些修正,例如web參數(shù)安全。支持多個(gè)分頁(yè)在考慮中,關(guān)于service安全更請(qǐng)具體一些,service是設(shè)計(jì)為允許extend的,另,目前將會(huì)基于aop加入權(quán)限控制。最近忙于一個(gè)項(xiàng)目的升級(jí),這方面時(shí)間用少了很多啊
現(xiàn)在cvs上的也是比較穩(wěn)定的,暫時(shí)沒(méi)有發(fā)現(xiàn)bug。幾個(gè)項(xiàng)目從1.0開(kāi)始都在用
pojo的package下。
classname-conversion.properties
給你補(bǔ)充一點(diǎn),-conversion.properties設(shè)定不局限于webwork action,支持任意pojo,意味著可以支持無(wú)限層次的Collection自動(dòng)賦值,如:
root.one[0].two[0].three[0]
root.one[0].two[0].three[1]
...
root.one[n].two[n].three[n]
CVS上已加入前臺(tái)傳入的參數(shù)校驗(yàn)以及額外增加參數(shù)的功能,都可以通過(guò)配置properties文件實(shí)現(xiàn),增加了安全性及靈活性
不太明白,頁(yè)面顯示有什么問(wèn)題?Set一樣可以iterator
上面有寫(xiě),MSN: hotmail的帳號(hào)scorpio_leon
用CVS上的吧,現(xiàn)在release的只支持Long的主鍵,CVS上的去掉了這個(gè)限制
有問(wèn)題可以加我的MSN或者到這里討論
http://forum.bba96.com/forum.jspa?forumID=29&start=0
還將加入權(quán)限控制的模塊,由于一直在趕項(xiàng)目,還來(lái)不及把權(quán)限發(fā)布,因?yàn)檫€有一些需要調(diào)整的代碼。
find(Cat.class, new String[]{"name", "kittens:kitten.name"}, new String[]{"like", "like"}, new Object[]{"F%", "F%"})
這是action/service的寫(xiě)法,若你用webwork,框架中支持直接從jsp解析參數(shù),就比較方便了。
冒號(hào)后表示別名,還可以繼續(xù)進(jìn)行關(guān)聯(lián)查詢(xún)?nèi)?kittens:kitten.propeties:property.name,沒(méi)有層次的限制。
The operator can only be set 'is' or '=' or 'is not' or '!=' when value is NULL!"
這個(gè)異常就是告訴你現(xiàn)在的值是null,對(duì)應(yīng)的操作符只能是=, !=, is, is not。
因?yàn)椴樵?xún)的字段有可能是對(duì)象,null是有意義,所以要忽略view傳過(guò)來(lái)的參數(shù),應(yīng)該由Action這層處理,缺省的頁(yè)面?zhèn)鬟f過(guò)來(lái),有參數(shù)名的值,沒(méi)填的時(shí)候就是空,因此在我的webwork action中對(duì)空串作了忽略處理,同時(shí)還已經(jīng)作了string到一般對(duì)象的轉(zhuǎn)換,你的jsp中可以這樣寫(xiě)endTime_Date。以下這一段通過(guò)自動(dòng)處理都能省掉,你可以參考一下,用struts也能實(shí)現(xiàn)。
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 };
host:cvs.dev.java.net
repository path:/cvs
user:guest
password:(空)
然后
check out bba96
DefaultActionSupport一部分是簡(jiǎn)化webwork持久化操作,另一部分就是解析jsp或者properties傳遞的參數(shù),后面這部分是類(lèi)似的,直接就可以用。我的框架已經(jīng)應(yīng)用在我以及其他用戶(hù)開(kāi)發(fā)的很多工程中,你可以放心采用,建議取cvs上最新的。
這個(gè)很容易實(shí)現(xiàn),只要有關(guān)聯(lián),bba96在動(dòng)態(tài)產(chǎn)生查詢(xún)語(yǔ)句方面比較強(qiáng)大的,特別是方便的別名無(wú)限關(guān)聯(lián),以及復(fù)雜的邏輯關(guān)系組合。具體看QueryObject,QueryParam。
不過(guò)暫時(shí)還沒(méi)有struts整合的代碼,而且以后struts ti將以webwork為核心,所以我也不打算為現(xiàn)有的struts做整合了,所謂不能整合只是不方便jsp調(diào)用,但是action層是直接支持的,不須特別整合。
HQL應(yīng)該跟Critiera+Projections比較,雖然我沒(méi)有仔細(xì)比較過(guò),不過(guò)沒(méi)感覺(jué)HQL強(qiáng)大多少?我看Critiera+Projections都能實(shí)現(xiàn)嘛,或者你舉個(gè)例子讓我看看。 MSN: hotmail的帳號(hào)scorpio_leon
除非Critiera支持,目前不能,需要對(duì)象間有關(guān)聯(lián),因?yàn)閮?nèi)部還是Critiera得query方法。
算了,還是用return String作為通知手段吧。