0
我正在創建一個網站,將有文章;每篇文章都會有評論。這些註釋將被存儲在具有稱爲「parent_id」的字段的「註釋」表中,該字段是同一個表中字段「id」的外鍵。如何創建與父母/子女關係的@實體
我希望能夠遞歸地使用Hibernate獲取特定文章的所有評論。
這裏是我的實體:
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import org.hibernate.annotations.IndexColumn;
@Entity
public class Comment implements Serializable {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int id;
@ManyToOne
@JoinColumn(name="user_id")
private User user;
@OneToMany(targetEntity=Comment.class)
@JoinColumn(name="parent_id")
@IndexColumn(name="id", base=0)
private List<Comment> comments = new ArrayList<Comment>();
@Column(name="article_id", length=10)
private int articleId;
@Column(name="text", length=8192)
private String text;
public int getArticleId() {
return articleId;
}
public void setArticleId(int articleId) {
this.articleId = articleId;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
@Override
public String toString() {
return "Comment [" + "articleId " + articleId + " " + "id " + id + " " + "text " + text + " " + "]";
}
}
代碼是「有點」的工作,但是,當所有的評論被檢索的意見「子」列表中包含了相同數量的元素,因爲有總評論(如果這是有道理的,例如,假設我在表中只有三條評論,其中ID爲1的文章...這篇文章有兩條評論,其中一條評論有一條評論......帶孩子的數組評論有3條評論,前兩條爲空,最後一條爲子女評論。
此編碼是正確的?
謝謝,這似乎解決了我的問題。 – 2010-07-06 11:56:57
@El不客氣,很高興它解決了。 – 2010-07-06 12:13:22
謝謝你乾淨的回答。絕對會嘗試。 – Nabin 2016-06-21 16:20:24