Vaadin と Hibernate を使用してプロジェクトをテストしています。HbnContainer クラスを使用してデータをテーブルに表示しようとしています。問題は、表に 2 つのクラスのすべてのプロパティを表示したくないことです。
例えば:
@Entity
@Table(name="users")
class User {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Long id;
private String name;
@ManyToOne(cascade=CascadeType.PERSIST)
private UserRole role;
//getters and setters
}
そして2番目のクラス:
@Entity
@Table(name="user_roles")
class UserRole {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Long id;
private String name;
//getters and setters
}
次に、HbnContainer を使用してデータを取得し、テーブルに接続します。
HbnContainer container = new HbnContainer(User.class, app);
table.setContainerDataSource(container);
テーブルにはユーザーの列のみが表示され、「ロール」の場合は代わりにロール ID が表示されます。その列を非表示にして、 UserRole.name に置き換えるにはどうすればよいですか?
UserRole のテーブル内の文字列値を取得するために ColumnGenerator() を使用することができましたが、数値で前の列を削除できませんでした。
私は何が欠けていますか?または、テーブルを表示する前にデータを「カスタマイズ」する最良の方法は何ですか (テーブルに複数のオブジェクト タイプのデータを表示したい場合はどうすればよいですか?)
簡単な解決策がすぐに見つからない場合は、「手動で」テーブルを作成するだけだと思います..
それで、この問題に関するアドバイスはありますか?
編集:
私は以前に自分自身を表現していませんでした。私が知る必要があるのは、HbnContainer でネストされた pojo を使用し、テーブルに表示されるプロパティ (および「サブプロパティ」) を制御する方法です。HbnContainer の一部を拡張して再実装しようとしましたが、適切に実行できませんでした。
前の例では、Users テーブルから生成されたテーブルは次のようになります。
Name |Role
George| 1
Alex | 2
私は次のようなものが欲しい:
Name | Role
George| admin
Alex | user