Я тестирую проект, используя 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);
В таблице будут отображаться только столбцы пользователя, а вместо «роли» вместо нее будет указан идентификатор роли. Как я могу скрыть этот столбец и заменить его на UserRole.name?
Мне удалось использовать ColumnGenerator (), чтобы получить строковое значение в таблице для UserRole - но я не смог удалить предыдущий столбец с числовым значением.
Чего мне не хватает? Или, каков наилучший способ «настроить» ваши данные перед отображением таблицы (если я хочу показать данные в таблице из более чем одного типа объекта ... что мне делать?)
Если я не смогу найти простое решение в ближайшее время, я думаю, что я буду просто строить таблицы "вручную" ..
Так, какой-нибудь совет по этому вопросу?
РЕДАКТИРОВАТЬ:
Я не выражал себя хорошо раньше. Что мне нужно знать, так это как использовать вложенные pojos с HbnContainer и контролировать, какие свойства (и «под-свойства») появляются в таблице. Я пытался расширить и переопределить некоторые части HbnContainer, но ... не смог сделать это правильно.
Для предыдущего примера таблица, сгенерированная из таблицы Users, выглядит следующим образом:
Name |Role
George| 1
Alex | 2
Я хочу что-то вроде:
Name | Role
George| admin
Alex | user