Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在hibernate限制下,java.util.Arrays$ArrayList不能强制转换为java.lang.String_Java_Hibernate_Hibernate Annotations - Fatal编程技术网

在hibernate限制下,java.util.Arrays$ArrayList不能强制转换为java.lang.String

在hibernate限制下,java.util.Arrays$ArrayList不能强制转换为java.lang.String,java,hibernate,hibernate-annotations,Java,Hibernate,Hibernate Annotations,我已经盯着这个问题太久了。执行.list()行时,spring会抛出一个与.add(Restrictions.in(“LocationCode”,locations))相关的异常 无法将java.util.Arrays$ArrayList转换为java.lang.String Restrictions.in应为(字符串,对象[])否 有人能指出我在通过限制时遗漏了什么吗 public List getIDsByDivision(String SelectedAccountCode,

我已经盯着这个问题太久了。执行.list()行时,spring会抛出一个与.add(Restrictions.in(“LocationCode”,locations))相关的异常 无法将java.util.Arrays$ArrayList转换为java.lang.String

Restrictions.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();

        }
客户类别

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;
}


}
包;
导入javax.persistence.Column;
导入javax.persistence.Entity;
导入javax.persistence.Id;
@实体
公共类客户{
@身份证
私有字符串ID;
@纵队
私有字符串名称;
私有字符串密码;
私有字符串位置码;
私人弦乐部;
私人字符串联系人电子邮件;
公共客户(){}
公共客户(字符串iD、字符串名称、字符串帐户代码、,
字符串位置代码、字符串分区、字符串联系人(电子邮件){
超级();
ID=ID;
名称=名称;
AcctCode=AcctCode;
位置代码=位置代码;
除法=除法;
ContactEmail=ContactEmail;
}
公共字符串getID(){
返回ID;
}
公共无效集合iD(字符串iD){
ID=ID;
}
公共字符串getName(){
返回名称;
}
公共void集合名(字符串名){
名称=名称;
}
公共字符串getAcctCode(){
返回AcctCode;
}
公共void setAcctCode(字符串acctCode){
AcctCode=AcctCode;
}
公共字符串getLocationCode(){
返回位置代码;
}
public void setLocationCode(字符串位置代码){
位置代码=位置代码;
}
公共字符串getDivision(){
回返司;
}
公共无效集除法(字符串除法){
除法=除法;
}
公共字符串getContactEmail(){
回复联系邮件;
}
public void setContactEmail(字符串contactEmail){
ContactEmail=ContactEmail;
}
}

关于问题的半假阳性,以下方法有效(我需要重构,但希望能理解要点):

(添加此项以确保完整性)


出于兴趣,你对空白有什么反对意见?我想我从来没有在你的
if
条件的每一行中看到过如此密集的代码。哈哈,读起来真的那么恐怖吗?如果是这样的话,我一定会继续改进我的风格。你能发布你的模型类(
Customer
)吗?@DanielM:是的,是的。我会在每个运算符和操作数之间放置一个空格,并且我还会使用
SelectedAccountCode!=空
而不是
空=选择会计科目代码
。哦,我建议您也开始遵循Java命名约定——因此将参数设置为camelCased而不是PascalCased。我们需要知道Customer类是如何映射的。
    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()]) ))