我正在使用EJB3.2和JPA 2.1。 在我的應用我有這些實體(簡稱):如何正確管理jpa雙向關係?
@Entity
public class Festival
{
int Id;
String name;
...
@ManyToOne
@JoinColumn(name = "merchant", referencedColumnName = "Id")
Merchant merchant;
}
@Entity
public class Merchant
{
int Id;
String name;
...
@ManyToOne
@JoinColumn(name = "category", referencedColumnName = "Id")
Category category;
@ManyToOne
@JoinColumn(name = "city", referencedColumnName = "Id")
City city;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "festival")
List<Festival> festivalList;
}
@Entity
public class Category
{
int Id;
String name;
...
@OneToMany(cascade = CascadeType.ALL, mappedBy = "merchant")
List<Merchant> merchantList;
}
@Entity
public class City
{
int Id;
String name;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "merchant")
List<Merchant> merchantList;
}
因此,(節日,商家)有一個像(商人,類別)和(商人,市)的雙向關係
問題當我刪除或更改商家時,仍然在類別merchantList和cities merchantList中有未更改的副本!等等..
我應該如何管理這些變化?!爲什麼JPA不會自己更改其他副本?它不會增加錯誤的複製風險?!
您不讓JPA知道雙向關係。它可以通過「mappedBy」屬性完成。請閱讀文章:http://examples.javacodegeeks.com/enterprise-java/jpa/one-to-many-bidirectional-mapping-in-jpa/ – VirtualLogic 2015-04-06 13:37:05
親愛的@Shanu,我的問題不在於此。我在這裏簡單地寫了代碼,真正的代碼有這個屬性,但是爲了解析,我也會在編輯時將它們寫在這裏。 – 2015-04-06 13:39:03
是的,請提供模式代碼片段,以提供具體的幫助。 – VirtualLogic 2015-04-06 13:41:27