我需要进行一个外部连接查询,以检索与某个公司相关联的所有定义以及与它们相关联的任何属性。
我有两个 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] 是可能为空的属性。
我的问题:
- 传递对象 [] 列表令人讨厌且对 OO 不太友好。
- 我不能只保留 PropertyDefinition,因为它拥有的属性列表不仅限于公司。
- 我可以创建一个简单的对象,该对象包含对 PropertyDefinition 的引用和一个可能为 null 的属性,但是必须遍历整个 List 并将每个对象放入这个新对象中是低效的。
有人对更好的查询或更好的映射结构有建议吗?我真的很感激任何帮助。