java.util.Arrays $ ArrayList不能在休眠限制上强制转换为java.lang.String
问题描述:
我一直在盯着这个问题太久。在执行.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;
}
}
答
半的假阳性是什么的问题是,下面的工作(我需要重构,但希望主旨理解):
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()])))
出于兴趣,你有什么反对的空白?我不认为我在你的'if'条件的每一行中都见过如此密集的代码。 –
哈哈,看起来真的太可怕了吗?如果是这样,我一定会改进我的风格。 –
你可以发布你的模型类('客户')吗? –