実装しようとしているクラスがあります(「Hibernateを使用したJava Persistence」6.3.3の例と同様)
public class Property
{
...
@ElementCollection(fetch=FetchType.EAGER)
@CollectionId(
columns=@Column(name="Property_image_id"),
type=@Type(type="long"),
generator="native"
)
private Collection<FileAttachment> images = new ArrayList<FileAttachment>();
...
}
単体テストは失敗し、次の例外がスローされます。
java.lang.ClassCastException: org.hibernate.id.IdentifierGeneratorHelper$2
cannot be cast to java.lang.Long
'generator'の最適な値についてはよくわかりませんが、これが結果に影響すると思います。
また、これが機能するようになると、FileAttachmentオブジェクトはProperty_image_idにアクセスできますか?また、Propertyクラスで定義されているので、どのようにプロパティに割り当てますか?
私が欲しいのは、Property_imagesテーブルに複合キー[Property_id-Image_index]を持たせることです。ここで、Image_indexは新しいProperty_idごとに1から始まりますが、ジェネレーターで@ElementCollectionと@CollectionIdを使用してこれを実装する方法がわかりません。たぶん私はFileAttachmentを@Embeddableではなく@Entityとして持つ必要がありますが、Propertyクラス内でのみ使用されるものとしてではなくidを持っている必要があります。
乾杯!NFV