2

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;

    ....
}
4

1 に答える 1