0

Spring-hibernate Framework と Oracle データベースを使用しています。これで、project という名前のテーブルができました。各レコードには、一意の id、name、および parent_id 列があります。テーブルに次のレコードがあるとします...

ID NAME PARENT_ID
1  A     NULL
2  B     1
3  C     NULL
4  D     3
5  E     3

今、私はこれらのレコードが親子関係に従って表示されるツリー ビューを作成しました。このような..

1---P
   ch---2
3---P
   ch--4
   ch--5

データベースから動的にレコードを取得するツリーを作成する方法を誰でも手伝ってくれます。そして、データアクセスオブジェクト(DAO)とDAOの実装はどうなるでしょう..

ヘルプや提案は非常に役立ちます。

4

4 に答える 4

0

まず、PARENT_IDのみを選択します。次に、IDが前の結果の配列(http://www.w3schools.com/sql/sql_in.asp)にあるすべてのものを選択します。

  • これから、ツリーに親を作成し、展開時に子を遅延ロードできます。
  • または、すぐに子をツリーに配置することもできます。PARENT_IDがNULLでないすべてを選択し、それらを適切な親に(PARENT_IDによって)アタッチするだけです。

DAOがそれと何の関係があるのか​​わかりません。ただし、抽象化が必要な場合は、DAOパターンを使用できます。

DAOには、getAllParents、getChildrenForParentId、getAllChildren、..のようなメソッドがあります。

于 2012-05-30T07:08:17.480 に答える
0

質問が多すぎます。正しい方向に導くように努めます。目的地にたどり着けない可能性があります。

  • を作成します。ドキュメントEntitiesを参照してください
  • データベースにクエリを実行するビジネス クラスを作成するだけで、DAO は必要ない場合があります。(ヒント: EntityManagerHibernate の JPA 実装を使用している場合に使用してください)、ドキュメントを参照してください
  • 次に、Web アプリケーションで作業していると仮定して、ブラウザーでツリーとして表示します。

注: 別の質問として、もう一度来て、方法に関する具体的な質問をすることができます。

関連スレッド

于 2012-05-30T08:17:47.540 に答える
0

必要なのは、Oracle 階層クエリです。Oracle DB を使用しているので、幸運です。

しかし、Hibernate を介してこれを行う唯一の方法は、ネイティブ クエリを使用し、結果をオブジェクトにマッピングすることです。

于 2012-05-30T07:38:27.177 に答える
0

リスト型の1対多の注釈を使用して、POM(.javaクラス)で自己テーブル参照を作成しました。

@OneToMany(fetch = FetchType.EAGER)
@JoinColumn(name = "PARENT_ID",nullable=true)
@OrderBy(clause = "NAME")
@ForeignKey(name = "fk_child_project")     
private List<Project> projects= new ArrayList<Project>(); 
于 2012-05-30T07:27:30.940 に答える