Java InvalidDataAccessApiUsageException:参数值元素与预期类型不匹配
我正在尝试使用Spring数据执行一个IN查询。我的模型如下所示:Java InvalidDataAccessApiUsageException:参数值元素与预期类型不匹配,java,spring-boot,spring-data,spring-data-jpa,Java,Spring Boot,Spring Data,Spring Data Jpa,我正在尝试使用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 @
@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);
我的存储库界面如下所示:
@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);
正如在异常中所说的,Spring需要一个
字符串
,因为您的事务实体
中的客户id
是一个字符串,但您正在输入一个客户属性
。相反,您应该输入带有客户ID列表的列表
顺便说一句,假设您将客户id设置为客户属性的id
,您的客户id不应该是int
然后你可以做类似的事情
List<Integer> customerIds = customerEntitiesList.stream().map(CustomerEntity::getId).collect(Collectors.toList());
List customerIds=customerentieslist.stream().map(CustomerEntity::getId).collect(Collectors.toList());
您也可以发布您的交易实体吗?我已经更新了原始帖子。同时我解决了这个问题,我向查询传递了一个对象,但它需要一个字符串。我想我对spring数据的评价太高了:)我对结果不满意,因为我首先得到一个客户列表,然后我必须创建一个单独的客户id(字符串)值列表,并使用该列表进行查询。也许还有别的办法?