java xwork_java-与休眠的Struts2 xwork类型转换
在Struts2應用程序中轉換類型的最佳方法是什么?
現在,我想為我的應用程序中的某個休眠實體創建CRUD.假設我想更改與用戶關聯的帳戶.只要我具有所有適當的獲取器/設置器,我就可以傳遞帶有特定值的參數user.account.id.
第一次創建對象(帳戶為空)時,這可以很好地工作.這使ognl創建了一個新的帳戶對象,并將ID設置為傳入的對象.
嘗試更改封裝的Account對象時,會發生此問題.使用相同的user.account.id參數,ognl將此解釋為getUser().getAccount().setId(param). Hibernate將此解釋為嘗試更改主鍵.
我知道為什么會這樣做,我只是想知道是否有更好的方法來處理這種情況.這在我們的應用程序中很常見,我不需要在通過休眠保存它們之前繼續創建多個對象并將其編組.
沒有人在struts2中有更好的方法來解決此問題嗎?
解決方法:
持久性類型轉換器
為實體創建類型轉換器,然后僅傳遞user.account而不是user.account.id.這將調用getUser().setAccount(account),不會使您頭痛.
更新記錄時,只需將user.account傳遞為表單中的隱藏字段.
至于為您的實體提供的廣泛解決方案,您可以選擇以下幾種:
多個轉換器
創建一個處理大多數邏輯的抽象類型轉換器,以使您擁有真正輕量級的每個實體的子類.在xwork-conversion.properties中注冊每個轉換器.
接口驅動轉換器
我使用的方法是有一個名為IdBasedJpaEntity的接口,該接口實現了99.9%的實體.它定義了Integer類型的getId()方法.然后,我有一個JpaDAORegistry單例類,該類是在應用程序啟動時創建的.我向它注冊了我的每個實體,并且它構造了每個DAO的單個實例(基本上是事實上的單例).我有一個實體類到DAO實例的映射.這使我的類型轉換器可以為任何給定的IdBasedJpaEntity查找合適的DAO實例,從而使我可以使用一個JpaEntityConverter類,該類可以與實現該接口的任何實體一起使用.這條路線還有很多工作要做,但是對我來說已被證明是高度可重用的.
標簽:hibernate,type-conversion,struts2,crud,java
來源: https://codeday.me/bug/20191208/2094076.html
總結
以上是生活随笔為你收集整理的java xwork_java-与休眠的Struts2 xwork类型转换的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 游戏gs是什么意思 4399小游戏
- 下一篇: 七猫小说怎么可以听(如何看待七猫中文网千