2014-01-24 50 views
1

我有問題,如果我修改或過濾DAO中的查詢,然後JSON結果不會來,否則它的工作。但我需要過濾查詢。所有的細節是:爲什麼沒有過濾查詢的JSON輸出?

表的詳細信息:地址(addressID,道路,州,代碼)

實體模型(Address.java):

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

    //getter + setter methods 
} 

我只需要addressIDcode,只這兩個領域。所以,我只映射這兩個,我不需要其他領域。

Action類(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輸出。

回答

0

您可以在查詢中使用where子句按條件過濾行。例如

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

我試圖使用類似於「從地址a中選擇a.addressID」的查詢。但沒有JSON輸出。但是,如果我嘗試使用DAO類的控制檯模式,那麼相同的查詢正在工作。 – adarksun

+0

使用此答案中的查詢。對於JSON輸出,你應該返回一個'json'結果。請參閱[this](http://stackoverflow.com/a/21350079/573032)回答。 –

+0

我試過這個答案。但我仍然感到困惑。在struts.xml中,我配置爲「」。所以,我期待通過字段「地址」到Action類的結果。但是它僅將主鍵字段的值賦予JSON結果。我沒有使用查詢「從Address a中選擇a.addressID」來獲取adressID值。那麼,實際上我需要更改哪個? – adarksun