我有一個產品物體。一種產品可以是另一種產品的子代。該關系與 OneToMany 映射如下。
@OneToMany(mappedBy = "parentProd")
private Set<Products> childProd = new HashSet<>();
@ManyToOne
@JsonIgnoreProperties("childProd")
private Products parentProd;
從這個映射生成的parent_product_id列不知何故包含無效的 parent_id。因此,當我嘗試使用 JPA 標準查詢來查詢所有產品時,出現以下錯誤。
javax.persistence.EntityNotFoundException: 在 org.hibernate.event.internal.DefaultLoadEventListener 的 org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$JpaEntityNotFoundDelegate.handleEntityNotFound(EntityManagerFactoryBuilderImpl.java:162) 中找不到 com.test.Products 的 id 101 .load(DefaultLoadEventListener.java:234)
如何撰寫條件查詢以選擇所有 Product 物體而不考慮 parent_child 關系?
@Entity
@Table(name = "products")
public class Products implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "productName")
private String productName;
@OneToMany(mappedBy = "parentProd")
private Set<Products> childProd = new HashSet<>();
@ManyToOne
@JsonIgnoreProperties("childProd")
private Products parentProd;
//Getters And Setters
}
uj5u.com熱心網友回復:
以這種方式更改 oneToMany 注釋:
@OneToMany(fetch = FetchType.LAZY, mappedBy = "parentProd")
這里的 fetch = FetchType.Lazy 表示如果你不明確詢問,資料將不會被獲取。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/433591.html
