Spring 启动 ManyToOne 关系

Spring Boot ManyToOne relationship

我正在尝试在字段上使用 Sprint 启动 ManyToOne 注释。 Order class

我的代码看起来像这样
package com.example.demo_app.data.models;

import javax.persistence.*;

@Entity
public class Order extends Object {
    @ManyToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "person_id")
    private Person person;

    public Person getPerson() {
        return person;
    }

    public void setPerson(Person person) {
        this.person = person;
    }
}

Person class 看起来像这样

package com.example.demo_app.data.models;

import javax.persistence.*;
import java.util.List;

@Entity
public class Person {
    private Long id;

    @OneToMany(targetEntity = Order.class)
    private List<Order> orders;

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

    @Id
    @GeneratedValue
    public Long getId() {
        return id;
    }

    public List<Order> getOrders() {
        return orders;
    }

    public void setOrders(List<Order> orders) {
        this.orders = orders;
    }
}

这是我遇到的错误

Caused by: javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is org.hibernate.MappingException: Could not determine type for: java.util.List, at table: person, for columns: [org.hibernate.mapping.Column(orders)]

Caused by: org.hibernate.MappingException: Could not determine type for: java.util.List, at table: person, for columns: [org.hibernate.mapping.Column(orders)]
    at org.hibernate.mapping.SimpleValue.getType(SimpleValue.java:512) 

感谢任何帮助。谢谢!

您遇到错误,因为 ORDER 是 SQL 关键字。 尝试将 table class Order 的名称更改为其他名称

@Entity
@Table(name="ORDERS")
public class Order {

@Id
private Long id;

@ManyToOne
@JoinColumn(name = "person_id")
private Person person;

//getters and setters

}

编辑:这是 Person class,将注释 @Id@GeneratedValue 放在 id 字段上,而不是 getter。

@Entity
@Table(name = "PERSON")
public class Person {
  @Id
  @GeneratedValue
  private Long id;

  @OneToMany(targetEntity = Order.class)
  private List<Order> orders;

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

  public Long getId() {
      return id;
  }

  public List<Order> getOrders() {
      return orders;
  }

  public void setOrders(List<Order> orders) {
      this.orders = orders;
  }
}