特定の会社に関連付けられているすべての定義とそれらに関連付けられているプロパティを取得する外部結合クエリを作成する必要があります。
2つの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(nullであってはなりません)であり、[1]はnullの可能性があるPropertyです。
私の問題:
- オブジェクトのリスト[]を渡すのは不快で、あまりOOフレンドリーではありません。
- PropertyDefinitionが保持するプロパティのリストは会社に限定されていないため、私はPropertyDefinitionを保持することはできません。
- PropertyDefinitionと場合によってはnullプロパティへの参照を保持する単純なオブジェクトを作成できますが、リスト全体を反復処理してそれぞれをこの新しいオブジェクトに配置するのは非効率的です。
より良いクエリまたはより良いマッピング構造についての提案がありますか?助けていただければ幸いです。