私はまだ Hibernate を使い始めたばかりで、継承した Web サイトで Hibernate を使用しようとしています。残念ながら、これは db スキーマが必ずしも意味をなさない場合があることを意味します。
そうは言っても、Criteria API を使用して次の HQL クエリを作成しようとしています。
from TableB b where b.id = :id and b.TableAProperty.UserId = :userId
上記の HQL ステートメントは、私が望んでいる TableB のみを選択して返す SQL を生成します。ただし、以下に示す Critera API ステートメントを使用すると、生成された SQL ステートメントは TableB と TableA のフィールドを選択します。
DataProvider.Session
.CreateCriteria<TableB>()
.Add(Expression.Eq("Id", id))
.CreateCriteria("TableA")
.Add(Expression.Eq("UserId", userId))
.UniqueResult<TableB>()
;
完璧な世界では、db スキーマを更新してより意味のあるものにすることができますが、残念ながらできません。これに関する任意の助けをいただければ幸いです。