2011-01-26 15 views
4

私は、例えば二つのテーブル... 持っている - 会社と従業員(このリアルシンプルに保つのを聞かせて)Hibernate OneToManyとManyToOneの混乱!ヌルリスト!

Company(id, name); 
Employee(id, company_id); 

Employee.company_idが外部キーであるが。

私のエンティティモデルは次のようになります...

従業員

@ManyToOne(cascade = CascadeType.PERSIST) 
@JoinColumn(name = "company_id") 
Company company; 

会社

@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER) 
@JoinColumn(name = "company_id") 
List<Employee> employeeList = new ArrayList<Employee>(); 

だから、ええ、私は会社の従業員のリストが欲しいです。私が行うと、次の

...

Employee e = new Employee(); 
e.setCompany(c); //c is an Company that is already in the database. 
DAO.insertEmployee(e); //this works fine! 

私はその後、私の会社のオブジェクトを取得する場合、それはリストだが空であります!

Iveは、Hibernateのドキュメントから無限のさまざまな方法を試みました!

明らかに正しいものを試していません!

私にはリストを作成してほしい、または賢明な選択肢を見つけてください。

大変感謝します。

答えて

5

この関係を双方向にする必要があります。あなたは2つの一方向のものです。 mappedBy = "company"employeeListに追加してください。これは単に、私はあなたが所有としてリストを持っている側を定義したとき、これを行うべきである をやるべきだと思ういけないEmployeeからCompany

@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy = "company") 
List<Employee> employeeList = new ArrayList<Employee>(); 
+0

Hey!速い返信をありがとう! 私はこれを行いましたが、まだ空リストを見ています。 これ以上のアイデアはありますか? ありがとう! – squizz

+0

ただし、この仕様から結合列を削除することができます。 –

+0

@ Vincent Ramdhanie:良い点。完了 – sblundy

0

へのREFの逆である従業員のリストを休止伝えますあなたの場合は従業員であり、会社ではありません。私はあなたが会社のインスタンスを読み込むたびにemployeeListの新しいインスタンスが提供されていると思います。しかし、確かに、毎回新しいArrayListをインスタンス化する必要はありません。

関連する問題