2 つのテーブルがあり、それらは相互にOne to Many
関連しています。それらは次のように定義されています。
@Entity
@Table(name = "accounts")
data class Account(
@field:Id
var id: UUID? = null,
@ManyToOne
var gender: Gender? = null,
var birthday: Long = 0) {
@ManyToMany(fetch = FetchType.EAGER, cascade = [CascadeType.MERGE])
@JoinTable(
name = "account_interests",
joinColumns = [JoinColumn(name = "account_id")],
inverseJoinColumns = [JoinColumn(name = "interest_id")]
)
var interests: Interests = emptyList()
}
@Entity
@Table(name = "genders")
data class Gender(
@field:Id
var abbr: Char? = null,
var description: String = ""
)
データベースからデータを選択したいのですが、最初に SQL で行いました。
SELECT g.description, a.gender_abbr, count(a.gender_abbr)
from accounts a
inner join genders g on g.abbr = a.gender_abbr
group by a.gender_abbr, g.description
問題は、上記の SQL を hibernate panache HQL に変換する方法です。