我正在测试一个项目,使用 Vaadin 和 Hibernate。我正在尝试使用 HbnContainer 类将数据显示到表中。问题是我不想在表中显示这两个类的所有属性。
例如:
@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
}
第二类:
@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 ?
我设法使用 ColumnGenerator() 为 UserRole 获取表中的字符串值 - 但我无法使用数值删除前一列。
我错过了什么?或者,在显示表格之前“自定义”数据的最佳方式是什么(如果我想在表格中显示来自多个对象类型的数据......我该怎么办?)
如果我不能很快找到一个简单的解决方案,我想我会“手工”构建表格..
那么,对这个问题有什么建议吗?
编辑:
我以前没有很好地表达自己。我需要知道的是如何使用嵌套的 pojos,与 HbnContainer,并控制表中出现的属性(和“子属性”)。我试图扩展和重新实现 HbnContainer 的某些部分,但是.. 无法正确执行。
对于前面的示例,从 Users 表生成的表如下所示:
Name |Role
George| 1
Alex | 2
我想要类似的东西:
Name | Role
George| admin
Alex | user