Всем привет!
У меня есть Дома (House), у которых есть куча других дочерних сущностей, в том числе - Документы (Doc). Проблема в том, что есть документы нескольких разных типов. Сейчас я хочу работать только с одним конкретным, но в будущем мне понадобятся и другие.
В БД уже есть данные по другим типам и, естественно, форма падает при попытке её открыть - ведь возвращается больше 1 результата. Переделал связь на ManyToOne, в House сделал List вместо единственного значения.
Но не пойму, в каком месте и как отделить ненужные. Сейчас код выглядит так:
HOUSE@Data
@Entity
@Table(schema = "public", name = "House")
public class House implements Serializable {
@Column(name = "House_ID")
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
// всякие другие поля дома и другие дочерние сущности
@OneToMany(mappedBy = "house", cascade = CascadeType.ALL, fetch = FetchType.LAZY, orphanRemoval = true)
@Cascade(org.hibernate.annotations.CascadeType.ALL)
private List<HouseDoc> houseDocs;
HouseDoc@Entity
@Table(name = "House_Doc", schema = "public")
@Data
public class HouseDoc implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "Pkey_id")
private Integer id;
@Column(name = "Doc_type")
private int docType;
// всякие другие поля документов
@ManyToOne
@JoinColumn(name = "House_ID", referencedColumnName = "House_ID")
protected House house;
}
dto House@Data
@NoArgsConstructor
@AllArgsConstructor
public class HouseFullProjection extends HouseProjection {
private List<HouseDoc> houseDocs;
dto HouseDoc@Data
public class HouseDocProjection implements Serializable {
private Integer id;
protected int docType;
}
Контроллер: пытаюсь отдать всё в интерфейс@RequestMapping(value = "/houses/edit/{id}")
public ModelAndView editCard(@PathVariable("id") Integer id) {
House house = service.getHouse(id);
house.getWindowOptions(); // это всякие другие дочерние сущности, с ними всё ок
<b>house.getHouseDocs();</b> // вот тут мне нужен 1 документ, а не пачка
return editCard(house);
}
Подскажите пожалуйста, куда правильно будет вставить условие: нужны только документы, у которых docType = 1.