2013-10-14 36 views
0

我一直在盯着這個問題太久。在執行.list()行時,會彈出與.add(Restrictions.in(「LocationCode」,位置)有關的異常) java.util.Arrays $ ArrayList不能轉換爲java.lang.String。

限制.in期待(字符串,對象[])否??

有人可以指出什麼,我錯過了傳遞到限制。

public List getIDsByDivision(String SelectedAccountCode, 
     List SelectedDivision, String SelectedLocation) { 
    List IDs=null; 
    String result="--Select--"; 
    Session session=null; 


    String[] locations=SelectedLocation.split(","); 



    try 
    { 

     session=sessionFactory.openSession(); 
     if(null!=SelectedAccountCode && !SelectedAccountCode.equals("--Select--") 
       &&SelectedDivision.size()>0&&!SelectedDivision.equals("--Select--") 
       &&locations.length>0&&!SelectedLocation.equals("--Select--")) 
     { 

      IDs=session.createCriteria(Customer.class) 
      // TODO fix this to location 
      .setProjection(Projections.distinct(Projections.property("ID"))) 
      .add(Restrictions.eq("AcctCode", SelectedAccountCode)) 
      .add(Restrictions.eq("Division", SelectedDivision)) 
      .add(Restrictions.in("LocationCode", locations)) 
      .list(); 

     } 

Customer類

package <removed>; 

import javax.persistence.Column; 
import javax.persistence.Entity; 
import javax.persistence.Id; 

@Entity 
public class Customer { 

@Id 
private String ID; 
@Column 
private String Name; 
private String AcctCode; 
private String LocationCode; 
private String Division; 
private String ContactEmail; 


public Customer(){} 

public Customer(String iD, String name, String acctCode, 
     String locationCode, String division, String contactEmail) { 
    super(); 
    ID = iD; 
    Name = name; 
    AcctCode = acctCode; 
    LocationCode = locationCode; 
    Division = division; 
    ContactEmail=contactEmail; 
} 



public String getID() { 
    return ID; 
} 

public void setID(String iD) { 
    ID = iD; 
} 

public String getName() { 
    return Name; 
} 

public void setName(String name) { 
    Name = name; 
} 

public String getAcctCode() { 
    return AcctCode; 
} 

public void setAcctCode(String acctCode) { 
    AcctCode = acctCode; 
} 

public String getLocationCode() { 
    return LocationCode; 
} 

public void setLocationCode(String locationCode) { 
    LocationCode = locationCode; 
} 

public String getDivision() { 
    return Division; 
} 

public void setDivision(String division) { 
    Division = division; 
} 

public String getContactEmail() { 
    return ContactEmail; 
} 

public void setContactEmail(String contactEmail) { 
    ContactEmail = contactEmail; 
} 


} 
+0

出於興趣,你有什麼反對的空白?我不認爲我在你的'if'條件的每一行中都見過如此密集的代碼。 –

+1

哈哈,看起來真的太可怕了嗎?如果是這樣,我一定會改進我的風格。 –

+2

你可以發佈你的模型類('客戶')嗎? –

回答

0

半的假陽性是什麼的問題是,下面的工作(我需要重構,但希望主旨理解):

String[] locations=SelectedLocation.split(","); 
    List<String> locs=new ArrayList<String>(); 
    for(String l:locations) 
    { 
    locs.add(l); 
    } 

...

這個例外實際上是指:

.add(Restrictions.in("Division", SelectedDivision)) 

(添加此的完整性)

.add(Restrictions.in("LocationCode", locs.toArray(new String[locs.size()]))) 
相關問題