Record在序列化为json时,能否保留表名?

俸志刚 发布于 2013/01/22 14:50
阅读 235
收藏 0

@JFinal 你好,想跟你请教个问题:

Record在序列化为json时,能否保留表名?

我的应用场景如下:

1)前端采用JQGrid显示数据;

2)后端通过left join从a,b两个表中联查数据,包括:a.name ,b.name两个重名的字段;

3)采用jqgrid实现的search功能时,jqgrid返回name字段作为搜索字段,后端需要将搜索条件放入到where子句中;而别名在子句中是无法生效的,所以需要带上表名;(而据我调试跟踪看,表名在生成Record时已经去掉了,如果都不取别名的话,后一个name将覆盖前一个)。

如果将表名硬编码进搜索条件中,则重复代码较多,消除起来有些麻烦;

另一解决办法是将查询字句多包一层,然后再取别名,似乎可行,但代码有点不清爽,效率也会略受影响;

不知道,您有没有更好的解决办法,多谢啦!

加载中
0
JFinal
JFinal

可以将需要序列化的 Record 对象先set一下表名再序列化即可,如: 

List<Record> users = Db.find(..);
for (Record u : users)
    u.set("table", "user");
renderJson("users", users);

JFinal
JFinal
回复 @俸志刚 : 使用sql让tableName在结果集中出现
俸志刚
俸志刚
@JFinal 这样虽然在结果集中包含了tableName,但tableName和字段没有关联,所以还不能满足我的需求
JFinal
JFinal
回复 @俸志刚 : 使用用sql让tableName在结果集中出现也可以实现,例如:select id, name, "tableName" from tableName where... 这样就可以让 tableName 出现在结果集中了
俸志刚
俸志刚
谢谢!@JFinal 这个办法可以部分解决我的问题,但Record中2个表的字段都有,所以很难用一个循环直接set表名;目前我用嵌套子select语句的方法解决的这个问题,因为数据量不大,性能问题可以忽略
返回顶部
顶部