SpringBoot JPA MappedBy通过引用未知的目标实体属性

时间:2018-07-20 17:08:44

标签: mysql spring hibernate spring-boot jpa

错误:hibernate.AnnotationException:mappedBy通过引用未知的目标实体属性

我知道为什么会出现错误,但是我盯着它看的时间越长,我就越找不到它:)。我只需要另一个人的视角。

这是MySQL表: enter image description here

然后我具有用于用户,公司和交易的实体。

关系如下所示:

交易:

@ManyToOne
    @JoinColumn(name = "userId")
    User user;

    @ManyToOne
    @JoinColumn(name = "companyId")
    Company company;

公司

@JsonIgnore
    @OneToMany(mappedBy = "transaction")
    List<Transaction> transactions;

用户

@JsonIgnore
    @OneToMany(mappedBy = "transaction")
    List<Transaction> transactions;

这是完整的错误:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed; nested exception is org.hibernate.AnnotationException: mappedBy reference an unknown target entity property: top100.models.Transaction.transaction in top100.models.User.transactions

所以错误与关系有关,但我无法发现我的错误。

谢谢:)

3 个答案:

答案 0 :(得分:1)

也许您尝试按“用户”字段进行映射。 可能您会在Understanding mappedBy annotation in Hibernate

那里看到这个问题。

答案 1 :(得分:1)

公司

@JsonIgnore
@OneToMany(mappedBy = "company")
List<Transaction> transactions;

用户

@JsonIgnore
@OneToMany(mappedBy = "user")
List<Transaction> transactions;

mappedBy指的是连接到的字段的名称。 @Aleksandr Zorin提供的链接具有更多详细信息。我建议您看看:)

答案 2 :(得分:1)

应该是

公司

@JsonIgnore
@OneToMany(mappedBy = "company")
List<Transaction> transactions;

用户

@JsonIgnore
@OneToMany(mappedBy = "user")
List<Transaction> transactions;

mappedBy 属性中,您在引用表中指定应映射该字段的字段。