bi-di マップ マッピングがあります。読み取りは機能しますが、Hibernate はマップ キー列を保存しません。デバッガーでチェックインすると、すべてが正しく設定されています。
INSERT クエリは次のとおりです。
insert into rel_custField (field_id, release_id, value, id) values (22, 1, 'fwefwe', 3)
列の設定も含まれている必要がありname
ます。どうすればそれを達成できますか?
name
おそらく問題は、マップ アイテム エンティティにプロパティがないことでしょうか? しかし、ドキュメント/仕様で見たことがありません。
その解決策を選択した場合、name プロパティを手動で設定する必要がありますが、これは非現実的で冗長に思えます。
@SuppressWarnings("serial")
@Entity @Table(name="`release`")
public class Release implements Serializable, IHasTraits {
@MapKeyColumn(name = "name")
@OneToMany(mappedBy = "release", cascade = CascadeType.ALL )
//@JoinColumn(referencedColumnName = "release_id") // Only at one side.
private Map<String, ReleaseCustomField> customFields = new HashMap();
...
}
と
@Entity
@Table(name = "rel_custField", uniqueConstraints = {
@UniqueConstraint(name = "rel_prodcf", columnNames = {"release_id", "field_id"})
})
public class ReleaseCustomField implements Serializable {
@Id @GeneratedValue( strategy = GenerationType.AUTO )
private Long id;
// Make uni-dir?
@ManyToOne(optional = false)
@JoinColumn(name = "release_id", nullable = false, updatable = false)
private Release release;
....
}