Java中的mappedBy引用了一个未知的目标实体属性 - Hibernate错误

bluesky1年前 ⋅ 117 阅读

ChatGPT的回答仅作参考:

这个错误通常是由于在实体类之间的关系映射中,mappedBy属性引用了一个不存在的属性名所导致的。

例如,假设我们有两个实体类:Order和OrderItem,它们之间是一对多的关系。在Order类中,我们定义了一个Set<OrderItem>类型的属性items,如下所示:

```
@Entity
public class Order {
    @Id
    private Long id;

    @OneToMany(mappedBy = "order")
    private Set<OrderItem> items;

    // getters and setters
}
```

在OrderItem类中,我们定义了一个ManyToOne类型的属性order,如下所示:

```
@Entity
public class OrderItem {
    @Id
    private Long id;

    @ManyToOne
    @JoinColumn(name = "order_id")
    private Order order;

    // getters and setters
}
```

在这个例子中,我们使用了mappedBy属性来指定Order类中的items属性是关系的维护端,而不是OrderItem类中的order属性。如果我们在Order类中使用了一个不存在的属性名,例如:

```
@Entity
public class Order {
    @Id
    private Long id;

    @OneToMany(mappedBy = "foo")
    private Set<OrderItem> items;

    // getters and setters
}
```

那么就会出现“mappedBy引用了一个未知的目标实体属性”的错误。

要解决这个问题,我们需要确保mappedBy属性引用的是正确的属性名。在上面的例子中,我们应该将mappedBy属性的值改为"order",如下所示:

```
@Entity
public class Order {
    @Id
    private Long id;

    @OneToMany(mappedBy = "order")
    private Set<OrderItem> items;

    // getters and setters
}
```

这样就可以解决这个错误了。

全部评论: 0

    相关推荐