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

Spring JPA@OneToMany参数值[]与预期类型不匹配

国胤
2023-03-14

我在请求服务线路时收到此错误:

List<Order> orders = ordersRepository.getByCustomerId(id);

错误:组织。springframework。道。InvalidDataAccessApiUsageException:参数值[5]与预期类型[nz.webshop.models.Customer.Customers(不适用)]不匹配;嵌套的异常是java。lang.IllegalArgumentException:参数值[5]与预期类型[nz.webshop.models.Customer.Customers(不适用)]

存储库:

public interface OrdersRepository extends JpaRepository<Order, Integer> {
    List <Order> getByCustomerId(Integer customerId);
}

实体:

@EntityA:
@Table(name = "orders")
public class Order {
@ManyToOne(targetEntity=Customers.class)
   @JoinColumn (name = "customer_id", referencedColumnName="customer_id")
    private Integer customerId;

...getters/setters




@EntityB:
@Table (name ="customer")
public class Customers {
    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    @Column(name = "customer_id")
    private Integer customerId;

    @OneToMany(targetEntity = Order.class, mappedBy = "customerId")
    private List<Order> Order;

...getters/setters

桌子是这样的:

CREATE TABLE orders
(
  order_id           INT AUTO_INCREMENT PRIMARY KEY,
  customer_id INT,
 FOREIGN KEY (customer_id) REFERENCES customer (customer_id)
);


CREATE TABLE customer
(
  customer_id INT AUTO_INCREMENT PRIMARY KEY,
  first_name  VARCHAR(50) ,
  last_name   VARCHAR(50) 

    );

更新:我将EntityA更改如下:

@EntityA:
@Table(name = "orders")
public class Order {

@Column(name = "customer_id") 
private Integer customerId;

@ManyToOne(targetEntity=Customers.class)
    private Customer customer;

...getters/setters

但是当请求相同的服务行时,会出现新的错误:org。springframework。道。InvalidDataAccessResourceUsageException:无法提取结果集;SQL[n/a];嵌套异常为org。冬眠例外SQLGrammarException:无法提取结果集。原因:com。mysql。jdbc。例外情况。jdbc4.MySQLSyntaxErrorException:未知列“order0\u0”。“字段列表”中的“customer\u customer\u id”。

问题出在哪里?

共有1个答案

衡修洁
2023-03-14

看起来像是订单。customerId属性设置不正确。您要求多人根据客户的ID查找客户模型,但随后您将模型作为整数加载。试试这个:

@ManyToOne
@JoinColumn(name = "customer_id", referencedColumnName="customer_id")
private Customer customer;

让我知道这是否可行,如果不行,我们可以解决更多问题。

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

  • 当我想跑的时候: 我得到: 执行操作“MappingAddAction”的服务异常,java.lang.IllegalArgumentException:参数值[5118]与预期的类型[com.vernuso.trust.server.domain.ClientImport.MappingInfo(N/A)]不匹配 有人能帮助我理解为什么它需要类型而不是类型吗? 我有两个表,如下图所示。Mappi

  • 我做错了什么? 正在更新: 我发现了问题所在。问题与ActionRepository中找到的函数有关。函数的签名首先要求两个日期进行比较,然后id和我给出了相反的值。我很清楚,在我上了它之后,我会有一个问题的日期,所以答案确实帮助了我。谢谢大家!

  • 我得到的错误. 我对此感到困惑,因为它来自下面显示的被注释掉的服务方法。当我把它注释掉时,错误就避免了。列是一个,即或。 实体: 我的存储库: 我的服务: 当我取消注释时

  • 这是我运行程序时收到的错误: 注:[19533]是我使用的一个测试值。 这是在CustomerServiceBeanImpl.java中出现错误的方法: 在快速检查ERD时,“Customer”表中的“id”列的数据类型为bigint。然而,我不确定这是否重要。(顺便提一下PostgreSQL数据库。) 如何修复此错误?

  • 问题内容: 我收到以下错误 java.lang.IllegalArgumentException: Parameter value [2] did not match expected type [com.cityBike.app.model.User (n/a)] at org.hibernate.jpa.spi.BaseQueryImpl.validateBinding(BaseQueryIm