Мне нужно сделать запрос внешнего соединения, который извлекает все определения и любые свойства, которые они связали с ними, которые связаны с определенной компанией.
У меня есть два объекта моделей Hibernate:
class PropertyDefinition {
@Id
private Long id;
@Column
private String name;
@OneToMany(mappedBy = "propertyDefinition")
private Set<Property> properties = new HashSet<Property>();
}
class Property {
@Id
private Long id;
@ManyToOne
private Integer companyId;
@ManyToOne
private PropertyDefinition propertyDefinition;
}
Таким образом, запрос в итоге выглядит так:
from PropertyDefinition as pd left join pd.properties as props with props.companyId = :companyId
Так что пока все хорошо. Проблема в том, в какой структуре я храню возвращенные данные? Hibernate возвращает список, где [0] - это PropertyDefinition (никогда не должно быть нулевым), а [1] - возможно нулевым свойством.
Мои проблемы:
- Это неприятно и не очень ОО-дружелюбно, чтобы обойти Список Объектов [] s.
- Я не могу просто удерживать PropertyDefinition, потому что список свойств, которые он имеет, не ограничивается компанией.
- Я мог бы создать простой объект, который содержит ссылку на PropertyDefinition и, возможно, нулевое свойство, но неэффективно выполнять итерацию по всему списку и помещать каждый в этот новый объект.
У кого-нибудь есть предложение для лучшего запроса или лучшей структуры отображения? Буду очень признателен за любую помощь.