我用SchemaExport爲創建我的表像這樣如何最好地處理關聯表/外鍵與休眠?
Configuration config = new Configuration();
config.addAnnotatedClass(Categories.class);
config.addAnnotatedClass(Article.class);
config.configure();
new SchemaExport(config).create(true, true);
Categories.java和Article.java的重要的部分是這些:
Article.java
@Id
@GeneratedValue
public Long getId() {
return id;
}
@OneToMany(cascade = CascadeType.ALL)
public Set<Categories> getCategories() {
return categories;
}
Categories.java
@Id
@GeneratedValue
public Long getId() {
return id;
}
@ManyToOne(cascade = CascadeType.ALL)
public Article getArticleCategories() {
return articleCategories;
}
運行時,模式導出生成三個表:第一條,類別和文章類別。 article_categories是一個關聯表,其中兩個主鍵與Article和Categories中的鍵匹配。只有文章和類別已被添加到我的ApplicationContext.xml中的SessionFactory,因爲我明顯沒有第三個表作爲類生成後的類。我寫了這個HQL:
"from Article a, article_categories ac, Categories c where ac.Article_id = a.id and ac.categories_id = c.id and c.category = 'p'"
Hibernate無法運行它,因爲article_categories沒有被映射。我需要映射它嗎?運行本機SQL而不是HQL可能的替代方案,還是應該避免關聯表一起?這個問題的解決方案是什麼?