JPA地图无法填充

时间:2019-11-11 18:47:26

标签: java jpa joincolumn

昨晚,我正在研究一些示例代码。我完成了该示例,所有测试都通过了(使用postgres,从不使用h2),我很高兴,做了一些清理,签入,现在由于我不知道的原因,我的练习的主要目标现在失败了。 test faliure

用例是,我有一个拥有现有电子邮件模板系统的客户,该系统本质上是一个哈希映射表,但是具有一个复合键,使不同的客户可以从各种模板中进行选择。

该表具有一个用于标识唯一行的主键,以及两个用于标识客户和模板的辅助ID列,分别表示为category_id和sub_category_id。

我的目标是拥有一个实体,回想起来,我可能应该将其称为EmailTemplateMap,但目前称为KeyValueCategories。

KeyValueCategories应该包含电子邮件模板令牌的映射作为键,并包含完整的bean(KeyValue.java)作为值。

如果有人可以帮助我识别大海捞针,那将不胜感激!

提前谢谢!

https://github.com/rheaghen/jpa_map-key-composite-id-single-table

@Entity
@Table(name = "key_value_categories")
@IdClass(Category.class)
public class KeyValueCategories implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    long categoryId;
    @Id
    long subCategoryId;

    @OneToMany(targetEntity = KeyValue.class)
    @JoinColumns( {
        @JoinColumn(name = "categoryId",  referencedColumnName = "categoryId"),
        @JoinColumn(name = "subCategoryId",  referencedColumnName = "subCategoryId")
        }
    )
    @MapKey(name="key")
    private Map<String, KeyValue> keyMap;
        ...
}
@Entity(name="key_value")
@IdClass(KeyValueId.class)
public class KeyValue implements Serializable {

    private static final long serialVersionUID = 1L;

    long id;

    @Id
    long categoryId;
    @Id
    long subCategoryId;

    private String key;

        private String value;
        ...
}
public class KeyValueId implements Serializable {

    private static final long serialVersionUID = 1L;

    long id;

    long categoryId;

    long subCategoryId;
        ...
}
public class Category  implements Serializable 
{
    private static final long serialVersionUID = 1L;

    long categoryId;

    long subCategoryId; 
        ...
}

0 个答案:

没有答案