我的模型包含不同型別的預算。這些預算具有不同的屬性。我想在這些不同型別的預算之間建立 OneToMany 關系。因此,假設我的 BudgetLevel1 有很多 BudgetLevel2,而 BudgetLevel2 又有很多 BudgetLevel3。所有這些預算級別都擴展了班級預算
我的預算班
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
public class Budget {
@Id
private Long id;
private String name;
private BudgetTyp budgetTyp;
private Double amount;
BudgetLevel1 類
@Entity(name= "BudgetLevel1 ")
public class BudgetLevel1 extends Budget {
@OneToMany(
**mappedBy="attBudgetLevel2 ",**
cascade=CascadeType.ALL,
orphanRemoval=true
)
private List<BudgetLevel2> budgets= new ArrayList<>();
private String att1;
BudgetLevel2 類
@Entity(name= "BudgetLevel2")
public class BudgetLevel2 extends Budget {
@OneToMany(
mappedBy="budgetlevel2",
cascade=CascadeType.ALL,
orphanRemoval=true
)
private List<BudgetLevel3> budgets= new ArrayList<>();
**@ManyToOne( fetch=FetchType.LAZY,
cascade=CascadeType.PERSIST)
@JoinColumn(name="budget_id")
Private BudgetLevel2 attBudgetLevel2;**
private String att2;
Budgetlevel3 看起來很相似
這是我得到的錯誤
org.springframework.beans.factory.BeanCreationException:在類路徑資源[org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]中定義名稱為“entityManagerFactory”的bean創建錯誤:呼叫init方法失敗;嵌套例外是 org.hibernate.AnnotationException: mappedBy reference an unknown target entity property: com.bm.ent.geschaeftsfeld.BudegetLevel1.budgetlevel2 at org.springframework.beans.factory 中的 com.bm.ent.geschaeftsfeld.marke.BudgetLevel2.budgetlevel1 .support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1786) ~[spring-beans-5.3.9.jar:5.3.9]
org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49) ~[spring-boot-devtools-2.5.4.jar:2.5.4] 引起:org.hibernate.AnnotationException: mappedBy 參考未知目標物體屬性:com.bm.ent.geschaeftsfeld.BudegetLevel1.budgetlevel2 中的 com.bm.ent.geschaeftsfeld.marke.BudgetLevel2.budgetlevel1
uj5u.com熱心網友回復:
mappedBy通過參考實際的欄位名稱來作業。在你寫的時候mappedBy="budgetlevel2",你告訴 hibernate 去尋找一個budgetlevel2你沒有的名為 的欄位。
您需要直接參考欄位名稱并確保您在正確的物體中具有休眠外觀,還需要targetEntity像這樣指定:
@OneToMany(
mappedBy="budgets",
cascade=CascadeType.ALL,
orphanRemoval=true,
targetEntity = BudgetLevel2.class
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/473253.html
上一篇:CteInsertStrategy只能與支持CTE的方言一起使用,這些方言也可以采用UPDATE或DELETE陳述句
