当前位置: 首页 > 知识库问答 >
问题:

Spring Data jpa-hibernate-OneTomany,ManytoOne双向

秦鸿羽
2023-03-14

拥有2个实体:订单和产品。1个订单可以有多个产品,多个产品可以属于1个订单(每个产品只属于1个订单)。

@Data
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name = "order_details")
public class OrderData {

    @Id
    @Column(name = "order_id", nullable = false, unique = true)
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long orderId;

    @NotNull
    @Column(name = "customer_name", nullable = false)
    private String customerName;

    @OneToMany(mappedBy = "productId", fetch = FetchType.LAZY, cascade = CascadeType.ALL)
    private Set<ProductData> products;

}

@Data
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name = "product_details")
public class ProductData {

    @Id
    @Column(name = "product_id", nullable = false, unique = true)
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long productId;

    @NotNull
    @Column(name = "product_name", nullable = false)
    private String productName;

    @ManyToOne(fetch = FetchType.LAZY, optional = false, cascade = CascadeType.ALL)
    @JoinColumn(name = "order_id", nullable = false)
    private OrderData orderData;
}

尝试了@JsonIgnore。这不会返回子元素或父元素。尝试了@JsonManagedReference和@JsonBackReference-仍然没有成功。

请给我指点一下

共有1个答案

通迪
2023-03-14

mappedBy属性指向错误的字段:

@OneToMany(mappedBy = "productId", fetch = FetchType.LAZY, cascade = CascadeType.ALL)
private Set<ProductData> products;

这必须是后面的引用:

@OneToMany(mappedBy = "orderData", fetch = FetchType.LAZY, cascade = CascadeType.ALL)
private Set<ProductData> products;
 类似资料:
  • 问题内容: 我目前正在阅读有关实体关联的Hibernate文档,但遇到一些困难却难以理解。它在本质上做的区别和联系。尽管我在实际项目中使用了它们,但是我无法完全理解它们之间的差异。据我了解,如果一个表/一个实体与另一个实体有关联,则该关联应来自另一侧。那么,我们应该如何根据具体情况决定选择哪个呢?它又如何影响数据库/查询/结果?到处都有很好的例子吗? PS:我认为这与问题相关,如果有人可以解释关联

  • 我在将带有@ManyToOne关系的实体(雇员)映射到带有@OneToMany关系的实体(社区)时遇到了问题。 当我将一个实体(社区)分配给一个实体(员工),其中社区的值为空时,它工作正常。 问题出现了,如果雇员已经为社区分配了价值。当我更改该值并保存更改时,该员工为社区获得了新的值,并且这个新社区在集合中获得了该员工。唯一的问题是,老社区仍然有这个员工在收集,但它应该被删除。这只有在数据库重新启

  • 我试图定义两个类之间的双向关系。拥有方是类测验,相反方是用户。一个用户可以创建许多测验,而一个测验只能有一个创建它的用户。我在网上找到的每一个教程都指出,在owning方面,您指定了ManyToOne注释和JoinColumn,在相反的方面,您使用owners字段的名称指定了OneToMany和mappedBy。然而,当我这样做时,IDE给了我一个错误“找不到逆关系”。我在这个概念上哪里出错了?如

  • Javers默认忽略而不是默认包含

  • 问题内容: 我有2个名为PurchaseList.java和PurchaseListItems.java的类 我必须在PurchaseListItems中映射PurchaseList PurchaseList.java PurchaseListItems.java 一切都很好,但我在pl_id中为空。请告诉我我错了 问题答案: 您的映射实际上定义了两个独立的单向关系。您想要的是一个双向关系。下面的

  • 问题内容: 我通过使用本教程学习Spring,Hibernate,Maven:Chad Lung:一个使用Netbeans 7,JUnit,Maven,HSQLDB,Spring和Hibernate的项目 。可以,但是我需要建立一对多关系(一个雇员有很多任务)。我已经尝试了许多示例,但仍然不知道如何使代码正常工作: Employee.java: Task.java: db-config.xml: