现在做的系统,牵扯到对象持有另一个对象的概念,在数据库设计表结构时:table 1 中持有table 2 ,简单画一个图吧 便于理解:
Table 1
Id_1 (pk)
projId
projStatusId
userGrop
Table 2
projStatusId(pk)
name
Description
在表中的体现是:table1 持有table2的 projStatusId,但是在页面显示中,table1的projStatusId要显示对应的name。
在modul层中我们这样写:
privateTable2table2;
在配置文件xml中
<many-to-onename=" table2"column="ProjStatusId"lazy="false"fetch="join"/>
当前台发生请求时,被持有的对象以这种形式传递到后台:
projItemSumLineStatus{"lineStatusId":0,"name":"Created","description":null}
看着怪怪的呢,是个字符串。字符串啊字符串字符串。
1 在做修改的时候,遇到了问题
我用到了这个注解:@ModelAttribute("newmoldheadinfo")
想着吧前台的对象传递过来交给hibernate去处理,就没事了,但是出现了异常
是类型转换的异常,说无法将string类型转换成object类型,smartclient传递过来的参数都是string类型的。Hibernate 怎么处理持有对象的解析呢,
其他的字段都正常,就是那个持有的字段报错。
这是修改中所遇到的问题。
2 查询功能
查出来的信息也是以jason格式显示的 如"projItemSumPEStatus":{"projEndStatusId":0,"name":"","description":null},
projStatusId在页面上显示对应的name的话 很简单 :
{name:"projEndStatusId",title:"ProjStatusId",valueXPath:"projItemSumPEStatus/projEndStatusId"},
{name:"name",title:"ProjStatusName",valueXPath:"projItemSumPEStatus/name"},
{name:"description",title:"ProjStatusDescription",valueXPath:"projItemSumPEStatus/description"}
乱七八糟的,等我想到解决方法了,再好好整理吧 ^_^
如果被持有的对象的ID为0 的话,在被持有对象的配置文件中添加 unsaved-value="-1"
如 <id name="projEndStatusId" column="ProjEndStatusId"unsaved-value="-1">
<generator class="native" />
</id>