次のような(簡略化された)テーブル構造があります。
顧客テーブル:
id name
-------------------
1 customer1
別名テーブル:
customer_id alias
-------------------------------
1 customer one
1 customer uno
次のクエリを実行すると、顧客ごとのエイリアスのリストを簡単に取得できます。
select * from customer_alias where customer_id=1;
休止状態でこのクエリを使用して、 type のリストを作成したいと思いますString
。私は@Formula
次のように使用してみました:
@Entity
@Table(name = "customer")
public class Customer {
@Id
@Column(name = "id")
@GeneratedValue(strategy= GenerationType.AUTO)
private Long id;
@Column(name="name")
private String name;
@Formula("(select alias from customer_alias where customer_id = id)")
private List<String> aliases;
// Getters, setters, etc...
}
うまくいかず、次の例外が発生しました。
Could not determine type for: java.util.List, at table: customer, for columns: [org.hibernate.mapping.Formula( (select alias from customer_alias where customer_id = id) )]
これを達成する方法はありますか?もちろん一緒である必要はありません@Formula
。どんな合理的な方法でも素晴らしいでしょう。
これが私の例のSQLFiddleです