【问题标题】:Value null in all relations ManyToOne with hibernate在所有与休眠的ManyToOne 关系中的值为null
【发布时间】:2021-08-17 20:07:38
【问题描述】:

我想在产品和供应商之间建立1对N的关系,这样一个供应商可以提供多个产品,而一个产品只有一个供应商。 我已经使用了相应的 JPA 注释,但仍然没有建立正确的关系。进入我所有的关系 1 到 N,因为值输入为 null。 发生了什么?

Product.java

@Entity
@Table(name="PRODUCTS")
public class Product implements Serializable{
    
    private static final long serialVersionUID = 1L;

    @Id //@GeneratedValue(strategy= GenerationType.AUTO)
    private Long id;
    private String name;
    private String unit;
    private double price;
    private boolean available;
        
    @ManyToOne (cascade = {     
            CascadeType.DETACH,
            CascadeType.MERGE,
            CascadeType.PERSIST,
            CascadeType.REFRESH
    })
    @JoinColumn(insertable=false, updatable=false)
    private Supplier supplier;

    @OneToMany(mappedBy = "product", fetch = FetchType.EAGER, cascade = {       
            CascadeType.DETACH,
            CascadeType.MERGE,
            CascadeType.PERSIST,
            CascadeType.REFRESH
    })
    private List<OrderDetail> orderDetails;
    
    @ManyToMany
    @JoinColumn(insertable=false, updatable=false)
    private List<Category> categories;
    
    @ManyToMany(mappedBy = "cart", fetch = FetchType.EAGER, cascade = {     
            CascadeType.DETACH,
            CascadeType.MERGE,
            CascadeType.PERSIST,
            CascadeType.REFRESH
    })
    private List<Client> customers;

Supplier.java

@Entity
@Table(name="SUPPLIERS")
public class Supplier implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id //@GeneratedValue(strategy= GenerationType.AUTO)
    private Long id;
    private String name;
    private String contactName;
    private String email;
    private String password;
    private String phone;
    private String country;
    private String city;
    private String address;
    private String postalCode;
    
    @OneToMany(mappedBy="supplier", fetch = FetchType.EAGER, cascade = {
            CascadeType.DETACH,
            CascadeType.MERGE,
            CascadeType.PERSIST,
            CascadeType.REFRESH
    })
    private List<Product> suppliedProducts;

【问题讨论】:

    标签: java hibernate jpa one-to-many many-to-one


    【解决方案1】:

    我已经解决了将 @JoinColumn(insertable=false, updatable=false)false 替换为 true 的问题。此更改允许 hibernate 插入和更新想要的值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多