我正在测试一个项目,使用Vaadin和Hibernate。我正在尝试使用HbnContainer类将数据显示到表中。问题是我不想显示表中两个类的所有属性。Vaadin表隐藏列和容器定制
例如:
@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 - 但我不能删除以前的列,数值。
我错过了什么?或者,在显示表格之前“自定义”数据的最佳方式是什么(如果我想在一个表格中显示来自多个对象类型的数据..我该怎么办?)
如果我可以'我很快就会找到一个简单的解决方案,我想我只是建立“手工”表。
那么,对这件事的任何建议?
编辑:
我没有表达自己以前。我需要知道的是如何在HbnContainer中使用嵌套pojos,并控制表中出现的属性(和“子属性”)。我试图扩展并重新实现HbnContainer的某些部分,但是......无法正确执行。
对于前面的示例,从用户表看起来像生成的表格:
Name |Role
George| 1
Alex | 2
我想是这样的:
Name | Role
George| admin
Alex | user