2016-12-06 70 views
1

iam正在處理實體間關聯如下的應用程序。這裏的評論是所有者和迭代,用戶是反轉表。要求是 - 用戶可以有許多評論,同樣可以由多個用戶發表評論。 另外一個迭代可以有多個註釋,一個註釋可以屬於多個迭代。 enter image description hereManyToMany映射關係表爲空(Hibernate新手)

的代碼如下 -

評論實體 -

@Table(name="RCOMMENTS") 
@Entity 
public class RComment{ 

@Id 
@Column(name="COMMENTID") 
@GeneratedValue(strategy=GenerationType.AUTO) 
private long commentid; 

@Column(name="DESCRIPTION") 
private String description; 

@Column(name="TYPE") 
private String type; 

@ManyToMany(cascade=CascadeType.ALL,fetch=FetchType.EAGER) 
@JoinTable(name = "COMMENTS_USERS", joinColumns = { @JoinColumn(name = "COMMENTID") }, 
    inverseJoinColumns = { @JoinColumn(name = "USERID") }) 
private Set <RUsers> users = new HashSet<RUsers>(); 

@ManyToMany(cascade=CascadeType.ALL,fetch=FetchType.EAGER) 
@JoinTable(name = "COMMENTS_ITERATIONS", joinColumns = { @JoinColumn(name = "COMMENTID") }, 
    inverseJoinColumns = { @JoinColumn(name = "ITERATIONID") }) 
private Set <RIteration> iteration = new HashSet<RIteration>(); 

用戶 -

@Entity 
@Table(name = "RUSER") 
public class RUsers { 
@Id 
@Column(name = "USERID") 
@GeneratedValue(strategy=GenerationType.AUTO) 
private long userid; 
@Column(name = "USERNAME") 
private String username; 
@Column(name = "PASSWORD") 
private String password; 

@ManyToMany(mappedBy="users") 
private Set <RComment> comment ; 

迭代 -

@Table(name = "RITERATION") 
@Entity 
public class RIteration { 
@Id 
@Column(name = "iterationid") 
@GeneratedValue(strategy=GenerationType.AUTO) 
private long iterationid; 
private Date startdate; 
private Date enddate; 
private long iter; 

@ManyToMany(mappedBy="iteration") 
private Set <RComment> comment = new HashSet<RComment>(); 

測試代碼 -

RUsers user = (RUsers) session.get(RUsers.class, this.userid); 
Set<RComment> comments = user.getComment(); 

現在的問題是IAM面對的是映射表是空的。 也user.getComment()產生空集

在我開始我的web應用程序之前,我的db實體表預填充虛擬值。但在運行時,當我調試代碼user.getcomment返回空集。

任何人都可以請幫我解決這個問題。

回答

0

如果您的實體之間存在雙向關係,那麼Hibernate會在將它們存儲在數據庫中時只注意雙方中的一個。

重要的一方是ManyToMany註釋不包含mappedBy變量的那一方。而這正是你需要指定的值方面:

RUsers user = ... 
RComment comment = ... 

comment.users.add(user); <--- that is the assignment hat hibernate will store! 

user.comments.add(comment); <--- that assigment will NOT been stored by hibernate, but hibernate will load it from database 
+0

可以請您詳細闡述 – Learner

+0

有沒有辦法保存有多個許多與多個逆表中的許多關係的主表? – Learner

+0

我不知道這樣的功能 – Ralph