Java 为什么过滤查询没有JSON输出?

Java 为什么过滤查询没有JSON输出?,java,json,hibernate,jsp,struts2,Java,Json,Hibernate,Jsp,Struts2,我有一些问题,比如如果我在DAO中修改或过滤查询,那么JSON结果就不会出现,否则它就会工作。但是我需要过滤查询。详情如下: 表详细信息:地址(地址ID、道路、州、代码) 实体模型(Address.java): @Entity public class Address(){ @Id int addressID; String code; //getter + setter methods } public class JSONData exten

我有一些问题,比如如果我在DAO中修改或过滤查询,那么JSON结果就不会出现,否则它就会工作。但是我需要过滤查询。详情如下:

表详细信息:地址(地址ID、道路、州、代码)

实体模型(Address.java):

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

    //getter + setter methods   
}
public class JSONData extends ActionSupport{

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

    public String jsonFormatDate() {

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

        return SUCCESS;
    }

}
public class AddressDAO{

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

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

动作类(JSONData.java):

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

    //getter + setter methods   
}
public class JSONData extends ActionSupport{

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

    public String jsonFormatDate() {

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

        return SUCCESS;
    }

}
public class AddressDAO{

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

}
公共类JSONData扩展了ActionSupport{
私人名单地址;
//盖特,塞特
公共字符串jsonFormatDate(){
AddressDAO=新的AddressDAO();
address=dao.listofalladdress();
回归成功;
}
}
DAO类(AddressDAO.java):

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

    //getter + setter methods   
}
public class JSONData extends ActionSupport{

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

    public String jsonFormatDate() {

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

        return SUCCESS;
    }

}
public class AddressDAO{

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

}
公共类地址dao{
AllAddress()的公共列表列表{
.....
List List=s.createQuery(“来自地址”).List();
.....
退货清单;
}
}
如果我使用查询
“from Address”
,那么JSON输出是成功的,我可以轻松地使用该结果来呈现JSP页面

但是如果我修改查询和过滤器,比如
“选择a.addressID,a.code from Address a”
,那么就没有JSON输出。此外,如果我也使用
where
子句,那么就没有JSON输出。如果我运行这个表单DAO层,查询将执行正确的输出。但不是来自JSON


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

您可以在查询中使用
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
结果。看答案,我试过那个答案。但我还是很困惑。在struts.xml中,我将其配置为“”。因此,我期望结果通过字段“address”进入Action类。但它只在JSON结果中提供主键字段的值。我没有使用查询“Selecta.addressID fromAddressA”来获取adressID值,所以,我实际上需要在哪里更改?