【问题标题】:Why no JSON output for filtered query?为什么过滤查询没有 JSON 输出?
【发布时间】:2014-01-24 21:28:30
【问题描述】:

我遇到的问题是,如果我在 DAO 中修改或过滤查询,那么 JSON 结果不会出现,否则它可以工作。但我需要过滤查询。所有细节是:

表格详情:地址(addressID, road, state, code)

实体模型(Address.java):

@Entity
public class Address(){
    @Id
    int addressID;
    String code;    

    //getter + setter methods   
}

我只需要addressIDcode,只有这两个字段。所以,我只映射了这两个,不需要其他字段。

动作类(JSONData.java):

public class JSONData extends ActionSupport{

    private List<Address> address;
    //getter, setter

    public String jsonFormatDate() {

        AddressDAO dao = new AddressDAO();
        address = dao.listOfAllAddresses();

        return SUCCESS;
    }

}

DAO 类(AddressDAO.java):

public class AddressDAO{

    public List<Address> listOfAllAddresses() { 
        .....
        List list = s.createQuery("from Address").list();
        .....
        return list;
    }

}

如果我使用查询 "from Address",那么 JSON 输出是成功的,我可以轻松地使用该结果来呈现 JSP 页面。

但是如果我像"select a.addressID, a.code from Address a" 这样修改查询和过滤器,则没有 JSON 输出。此外,如果我还使用 where 子句,则没有 JSON 输出。如果我运行这个表单 DAO 层,查询会执行正确的输出。但不是来自 JSON。

使用一些过滤规则获取 JSON 输出需要包含哪些内容。

【问题讨论】:

    标签: java json hibernate jsp struts2


    【解决方案1】:

    您可以在查询中使用where 子句按条件过滤行。例如

    Query q = s.createQuery("from Address as a where a.code = ?");
    q.setParameter(0, value);
    List list = q.list();
    

    【讨论】:

    • 我尝试使用“从地址 a 中选择 a.addressID”之类的查询。但没有 JSON 输出。但是,如果我尝试使用 DAO 类中的控制台模式,同样的查询也可以工作。
    • 在这个答案中使用查询。对于 JSON 输出,您应该返回 json 结果。请参阅this 答案。
    • 我试过这个答案。但我仍然很困惑。在 struts.xml 中,我配置为“”。所以,我期待通过字段“地址”进入 Action 类的结果。但它只将主键字段的值提供给 JSON 结果。我没有使用查询“从地址 a 中选择 a.addressID”来获取地址 ID 值那么,我实际上需要在哪里更改?
    猜你喜欢
    • 2020-09-15
    • 2019-05-14
    • 1970-01-01
    • 2017-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-15
    相关资源
    最近更新 更多