0
请你能帮助我吗?在JPA中,我尝试创建一个OneToMany双向关系,但我遇到以下错误: “[EclipseLink-63]:实例创建方法[entity.OrderLine。],没有参数,不存在或不可访问。 [EclipseLink-28019]:部署PersistenceUnit [simple-jpaPU]失败。关闭此PersistenceUnit的所有工厂。“JPA OneToMany双向关系[EclipseLink-63]错误
有我的实体: 一对多实体:
package entity;
import java.util.*;
import java.io.Serializable;
import javax.persistence.*;
import org.eclipse.persistence.annotations.TimeOfDay;
@Entity
public class Order implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Temporal(TemporalType.TIMESTAMP)
private Date creationDate;
@OneToMany(mappedBy = "o")
private List<OrderLine> orderLines;
public Date getCreationDate() {
return creationDate;
}
public void setCreationDate(Date creationDate) {
this.creationDate = creationDate;
}
public List<OrderLine> getOrderLines() {
return orderLines;
}
public void setOrderLines(ArrayList<OrderLine> orderLines) {
this.orderLines = orderLines;
}
public Order(Date creationDate) {
this.creationDate = creationDate;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
@Override
public int hashCode() {
int hash = 0;
hash += (id != null ? id.hashCode() : 0);
return hash;
}
@Override
public String toString() {
return "entity.Order[ id=" + id + " ]";
}
}
多对一实体:
package entity;
import java.io.Serializable;
import javax.persistence.*;
@Entity
@Table(name="orderline_table")
public class OrderLine implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String item;
private Double unitPrice;
private Integer quantity;
@ManyToOne
Order o;
public String getItem() {
return item;
}
public void setItem(String item) {
this.item = item;
}
public Double getUnitPrice() {
return unitPrice;
}
public void setUnitPrice(Double unitPrice) {
this.unitPrice = unitPrice;
}
public Integer getQuantity() {
return quantity;
}
public void setQuantity(Integer quantity) {
this.quantity = quantity;
}
public OrderLine(String item, Double unitPrice, Integer quantity) {
this.item = item;
this.unitPrice = unitPrice;
this.quantity = quantity;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
@Override
public int hashCode() {
int hash = 0;
hash += (id != null ? id.hashCode() : 0);
return hash;
}
@Override
public String toString() {
return "entity.OrderLine[ id=" + id + " ]";
}
}
焕我添加了无参构造函数的两个实体我有这样的错误: –
当我在两个实体添加无参数的构造函数我有这样的错误: “[EclipseLink-4002]:org.eclipse.persistence.exceptions.DatabaseException内部异常:org.postgresql.util.PSQLException:ERREUR:erreur de syntaxe sur ouprèsde«ORDER»位置:13错误代码:0调用:在org.eclipse.persistence.internal.jpa.transaction.EntityTransactionImpl处插入ORDER(ID,CREATIONDATE)VALUES(?,?)bind => [2参数绑定] Query:InsertObjectQuery(entity.Order [id = 151])。提交(EntityTransactionImpl.java:157)“ –
你的第二个问题没有与无参数构造函数有关的事情。我的法语有点生疏,但问题在于ORDER是SQL中的保留字。解决问题的一种方法是避免保留字作为表名。如果这是不可能的,可以从这里找到解决这个问题的其他两种方法:http://stackoverflow.com/questions/6791882/jpa-database-delimiters –