我正在嘗試在欄位上使用 Sprint 啟動 ManyToOne 注釋。我的Order類代碼看起來像這樣
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堂課看起來像這樣
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)
任何幫助表示贊賞。謝謝!
uj5u.com熱心網友回復:
您收到錯誤,因為ORDER是 SQL 關鍵字。嘗試將類的表名更改Order為其他名稱
@Entity
@Table(name="ORDERS")
public class Order {
@Id
private Long id;
@ManyToOne
@JoinColumn(name = "person_id")
private Person person;
//getters and setters
}
編輯:這是Person階級,把注解@Id和@GeneratedValue對id欄位,而不是吸氣。
@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;
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/363262.html
