java - JPA/Hibernate 不存储@MapKeyColumn 的值

标签 java hibernate jpa dictionary key

我有一个双向 map 映射。 阅读有效,但 Hibernate 不存储映射键列。 当我 checkin 调试器时,一切都已按预期设置。

INSERT 查询是:

insert into rel_custField (field_id, release_id, value, id) values (22, 1, 'fwefwe', 3)

它还应该包含设置 name 列。 我应该如何实现?

也许问题是 map 项实体没有 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;

    ....
}

最佳答案

根据我在这里找到的描述:http://en.wikibooks.org/wiki/Java_Persistence/Relationships#Map_Key_Columns_.28JPA_2.0.29

它不应该是目标实体的属性,而是列名。例如:

@MapKeyColumn(name = "id")
@OneToMany(mappedBy = "release", cascade = CascadeType.ALL )
private Map<String, ReleaseCustomField> customFields = new HashMap();

关于java - JPA/Hibernate 不存储@MapKeyColumn 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14587148/

相关文章:

java - 在 hibernate 中关闭 import.sql

java - 错误 : ORA-02289: sequence does not exist - org. hibernate.exception.SQLGrammarException:无法提取 ResultSet

java - JSP :forward on button Click()(when target jsp is under web-inf folder) 中的问题

java - Hibernate Spring MVC 注入(inject) Autowiring 问题

java - SeekBar.onProgressChanged() 的未知重复

mysql - Spring Boot JPA saveAll() 插入数据库非常慢

java - gradle springboot 和 postgresql 入门遇到问题

java - JPA 和 JSON 运算符 native 查询

java - 有没有办法从 Java 程序中调用 checkstyle?

java - 异常处理无限循环