java - JPA OneToMany、ManyToOne 双向

标签 java jpa jpa-2.0

我正在尝试消除以下错误:

The attribute [lcritical] in entity class [class pl.pwc.docs.pl704.PL704_Error] has a mappedBy value of [pl704_error] which does not exist in its owning entity class [class pl.pwc.docs.pl704.PL704_Error_Critical]. If the owning entity class is a @MappedSuperclass, this is invalid, and your attribute should reference the correct subclass.

PL704 @Entity 类:

@Entity  
public class PL704 implements Serializable {  
    private static final long serialVersionUID = 1L;  
    @Id  
    @GeneratedValue(strategy = GenerationType.AUTO)  
    private Long id;  
    private int Status;  
    private String Comments;  
    @OneToMany(mappedBy="pl704", cascade=CascadeType.ALL, targetEntity=PL704_Error.class, fetch=FetchType.EAGER)  
    private Collection lerror = new ArrayList<PL704_Error>();

    //getters, setters...  

PL704_Error @Entity 类:

@Entity  
public class PL704_Error implements Serializable {  
    private static final long serialVersionUID = 1L;  
    @Id  
    @GeneratedValue(strategy = GenerationType.AUTO)  
    private Long id;  
    private String ErrorType;  
    private String ErrorReason;  
    private String ErrorLocation;  
    private String OriginalAttributeValue;  
    @ManyToOne  
    @JoinColumn(name = "PL704_ID", referencedColumnName = "ID")  
    private PL704 pl704;  

    @OneToMany(mappedBy="pl704_error", cascade=CascadeType.ALL,     targetEntity=PL704_Error_Critical.class, fetch=FetchType.EAGER)  
    private Collection lcritical = new ArrayList<PL704_Error_Critical>();

    //getters, setters...

PL704_Error_Critical @Entity 类:

@Entity  
public class PL704_Error_Critical implements Serializable {  
    private static final long serialVersionUID = 1L;  
    @Id  
    @GeneratedValue(strategy = GenerationType.AUTO)  
    private Long id;  
    @ManyToOne(cascade=CascadeType.ALL)  
    @JoinColumn(name = "PL704_ERROR_ID", referencedColumnName = "ID")  
    private PL704_Error error;  

    //getters, setters...

总结一下,一个 PL704 可以有多个 PL704_Error。一个 PL704_Error 可以有多个 PL704_Error_Critical

我应该如何更改代码来修复错误?

使用:EclipseLink 2.1.1,H2 嵌入式。

最佳答案

应该是

@OneToMany(mappedBy="error", cascade=CascadeType.ALL,
    targetEntity=PL704_Error_Critical.class, fetch=FetchType.EAGER)
private Collection lcritical = new ArrayList<PL704_Error_Critical>(); 

查看PL704_Error_Critical中对应的属性名称:

@ManyToOne(cascade=CascadeType.ALL)
@JoinColumn(name = "PL704_ERROR_ID", referencedColumnName = "ID")       
private PL704_Error error;   

关于java - JPA OneToMany、ManyToOne 双向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4511051/

相关文章:

java - 为什么在Java中使用以下两个移位运算符语句会返回两个不同的结果

java - 展平 Java 8 可选管道中的元素列表

java - Spring EntityManager.persist 问题

java - 为什么我的数据仅在读取时刷新到数据库?

java - 使用 ParameterExpression 作为 In 子句的一部分

java - 如何正确地将带有 "join fetch"子句的 JPQL "where"表达为 JPA 2 CriteriaQuery?

java - 无重复的 k 排序数组的迭代器实现 - 面试问题

JAVA - 我如何保持增值

java - 如何使用 Hibernate 将 Postgres _INT8 映射到 Java 实体?

hibernate - 尝试编写JPA 2.1左外部联接时获取 "with clause can only reference columns in the driving table"