当前位置: 首页 > 知识库问答 >
问题:

异常:参数值元素与预期类型不匹配

万修为
2023-03-14

我正在尝试使用Spring数据执行一个IN查询。我的模型如下所示:

@Entity
@Table(name = "customer", schema = "public", catalog = "postgres")
public class CustomerEntity {
    private int id;
    private String name;
    private int balance;
    private String bankId;

    @Id
    @Column(name = "id")
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    @Basic
    @Column(name = "name")
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Basic
    @Column(name = "balance")
    public int getBalance() {
        return balance;
    }

    public void setBalance(int balance) {
        this.balance = balance;
    }

    @Basic
    @Column(name = "bank_id")
    public String getBankId() {
        return bankId;
    }

    public void setBankId(String bankId) {
        this.bankId = bankId;
    }

我的仓库界面是这样的:

@Repository
public interface TransactionsRepository extends JpaRepository<TransactionsEntity, Long> {

    List<TransactionsEntity> findByCustomerIdIn(List<CustomerEntity> customerEntities);

}

问题是当我尝试执行此代码List时

我得到这个例外:

原因:org.springframework.dao.InvalidDataAccessApiUsageException:Parameter value元素[org.example.domain.admin。CustomerEntity@6a1a2a4]与预期类型[java.lang.String(n/a)]不匹配;嵌套的异常是java.lang.IllegalArgumentException:Parameter-value元素[org.example.domain.admin]。CustomerEntity@6a1a2a4]与预期类型[java.lang.String(n/a)]不匹配。

更新:TransactionsEntity.class:

@Entity
@Table(name = "transactions", schema = "public", catalog = "postgres")
public class TransactionsEntity {

    private String id;
    private String amount;
    private String customerId;

    @Id
    @Column(name = "id")
    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    @Basic
    @Column(name = "amount")
    public String getAmount() {
        return amount;
    }

    public void setAmount(String amount) {
        this.amount = amount;
    }

    @Basic
    @Column(name = "customer_id")
    public String getCustomerId() {
        return customerId;
    }

    public void setCustomerId(String customerId) {
        this.customerId = customerId;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        TransactionsEntity that = (TransactionsEntity) o;

        if (id != null ? !id.equals(that.id) : that.id != null) return false;
        if (amount != null ? !amount.equals(that.amount) : that.amount != null) return false;
        if (customerId != null ? !customerId.equals(that.customerId) : that.customerId != null) return false;

        return true;
    }

    @Override
    public int hashCode() {
        int result = id != null ? id.hashCode() : 0;
        result = 31 * result + (amount != null ? amount.hashCode() : 0);
        result = 31 * result + (customerId != null ? customerId.hashCode() : 0);
        return result;
    }
}

共有1个答案

燕靖
2023-03-14

正如在异常中所说的,Spring需要一个字符串,因为您的事务实体中的客户id是一个字符串,但您正在输入一个客户属性。相反,您应该输入一个列表

顺便说一句,假设您将客户id设置为客户属性的id,您的客户id不应该是int

然后你可以做类似的事情

List<Integer> customerIds = customerEntitiesList.stream().map(CustomerEntity::getId).collect(Collectors.toList());

 类似资料:
  • 我生活在一场噩梦中,这是一场依赖性的噩梦;) 我正在测试一个使用Hibernate3的EJB应用程序。 我可以部署它: > 作为部署到嵌入式JBOSS 7()的Arquillian测试(EJB作为封装在EAR中的JAR)。它在那里不起作用。我尝试过各种依赖项集,但这是我确定需要的最小依赖项集:

  • 我已经回答了这个问题,但没有得到任何反馈。因此,我将尝试提出不同的问题。我想对我的搜索请求使用规范。但似乎无法访问规范或其他内容,因为它告诉我: 这个:带有@...似乎不对。 我只是试着遵循这个Spring官方教程:https://spring.io/blog/2011/04/26/advanced-spring-data-jpa-specifications-and-querydsl/ 或者来自

  • 我使用的是JPA2.0,在DAO层中有以下代码: 注意:这是从泛型例程中提取和简化的代码,我不能将“Object ValueArr”更改为String[],因为它被用于其他...

  • 我生活在一个噩梦中,而且是一个依赖的噩梦;) 我正在测试一个使用Hibernate3的EJB应用程序。 > 在WebSphere8上(EAR中内置的EJB JAR),这是我想要的目标环境。在那里很好用。按照我们组织的标准,(Hibernate)依赖关系是通过一个单独的过程来处理的。我似乎在那里获得了以下Hibernate依赖项: * * * * * * * * * 作为部署到嵌入式JBoss7()

  • 它打印出值的等效,这是因为这一行: 通过调用表示。 那么,如何使Hibernate相信是的实例? 我的枚举是由加载的。而由URLClassLoader加载,由另一个类加载器加载。

  • 何时调用Spring数据JPA方法将引发如下所示的异常 原因:java.lang.IllegalArgumentException:参数值元素[ApplicationMaterial(ID=1,Name=SDFSF,FileFormat=Doc,Description=DFSDFDS,TemplateFileURL=FSDFSDF,CreateDat=2018-09-26 16:54:09.297