2013-10-14 34 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()]))) 
相关问题