2016-11-10 34 views
0

Im在jpa有一些懷疑。例如一個表Post和一個表文件。一篇文章可以有多個文件關聯,一個文件關聯到一個文章,所以我們有一對多的關係。映射總是在一對多的關係方向

我有疑問知道我們應該創建OneToMany關係還是ManyToOne或兩者。例如,在post和files示例中,我們需要了解它的單向還是雙向是如果我們想知道一個帖子有哪些文件以及哪些文件在帖子中,對嗎?如果它的雙方都是雙向關係,對吧?但是這兩個問題看起來很相似,所以它的正常答案是肯定的。所以它不是一個很好的練習映射總是兩個方向?

實施例,映射總是兩個方向:

@Entity 
public class Post{ 
@GeneratedValue(strategy = GenerationType.AUTO) 
    private int id; 

    @OneToMany(mappedBy="post") 
    private List<Files> files= new ArrayList<>(); 
} 

@Entity 
public class File{ 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    private int id; 

    @ManyToOne 
    @JoinColumn(name="post_id") 
    private Post post; 
} 

回答

0

這都取決於要求和數據模型。使關係雙向不是好的或不好的做法。

如果您希望用戶只能通過Post達到Files而不是單向。 否則,如果您需要爲用戶提供直接搜索文件的功能,並且通過該用戶能夠查看該文章,請將其設爲雙向。

如果是雙向關係,請確保您創建一個方便的方法來設置FilesPost之間的關係,並且不要忘記使用inverse屬性。

+0

感謝您的回答。例如,假設你的第一個例子,如果一個用戶只能通過一個帖子訪問某些文件,那麼它是單向的。但在這種情況下是OneToMany或ManyToOne?你知道如何檢查嗎? – Ozzy

+0

@Ozzy在單向的情況下 - 您將在Post中擁有一個List文件的List字段,並且您需要在Post中進行映射,當然這將是OneToMany映射 – Ubercool