Отображение таблиц с отношением один-ко-многим

Добрый день.

Пытаюсь отобразить содержимое 2-х таблиц, свзяанных отношением один-ко-многим. К сожалению, не совем это получается.
Таблицы: pravform и contract.


pravform

@Entity
public class Pravform {
    @Id
    @GeneratedValue(strategy= GenerationType.IDENTITY)
    private int pfId;

    private String pfName;
    
    @OneToMany(mappedBy = "pravform")
    private Set<Contract> contracts;

//getters and setters


contract

@Entity
public class Contract {
    @Id
    @GeneratedValue(strategy= GenerationType.IDENTITY)
    private int contId;
    
    @ManyToOne 
    @JoinColumn(name="pfId")
    private Pravform pravform;

    private String contOrgName;
    private String contCity;

//getters and setters


отображение

private JPAContainer<Contract> contracts = JPAContainerFactory.make(Contract.class, "DogovoraPool");
private Table contTable = new Table(null, contracts);
contTable.setSelectable(true);
contTable.setMultiSelect(true);
contTable.setImmediate(true);
contTable.setMultiSelectMode(MultiSelectMode.DEFAULT);
contTable.setVisibleColumns(new Object[] { "contId", "pravform", "contOrgName", "contCity" });

В таблице contTable в столбце pravform значения видны в виде : com.val.dogovora.entity.Pravform@811136

Подскажите, где я ошибся?

Приветствую!
А что вы хотите видеть? Если название pravform, то переопределите метод toString

Да, спасибо, именно это мне и нужно было. Добавил в Pravform.java

@Override
public String toString() {
return pfName;
}

и все заработало :slight_smile:

Подскажите еще, откуда вы почерпнули эту информацию? Из какого учебника или самоучителя? Я перерыл все, что нашел об Ваадине, но не нашел, то, что мне нужно.

Я уже и не помню … То ли в Vaadin book, то ли в форуме от одного из разработчиков :slight_smile: Ну по сути можно догадаться, что com.val.dogovora.entity.Pravform@811136 есть имя класса, которое мы получаем от метода toString() по умолчанию

Я бы не скоро догадался. Я сейчас на стадии узучения Java :slight_smile:
Спасибо за помощь!

Походу еще вопрос возник. Колонка с данными, которые тянутся из другой таблицы не сортируется при нажатии на ее заголовок.
Нашел сортировку для JPAContainer, но она не работает.

contracts.sort(new String[] { "pravform.pfName" }, new boolean[]
 { true });

Выдается ошибка: No such sortable property ID: pravform.pfName
Подскажите еще с этим :slight_smile:

Конечно нет такого проперти, ведь у вас

[code]

{“contId”, “pravform”, “contOrgName”, “contCity” }

[/code]надо просто pravform

Если заменить так:

contracts.sort(new String[] { "pravform" }, new boolean[]
 { true });

то выдается такая же ошибка: No such sortable property ID: pravform

Может нужно что-то еще в классе pravform, откуда тянется pfName, изменить?

Я предполагаю что ошибка связанна с тем, что ваш класс не реализует интерфейс Comparable. Проще всего надо найти в исходниках Vaadin по какой причине выводится данная ошибка

Спасибо за наводку, буду искать.