Карта JPA не заполняется - PullRequest
       34

Карта JPA не заполняется

0 голосов
/ 11 ноября 2019

Прошлой ночью я работал над примером кода. Я завершил пример, все тесты проходили (с postgres, а не h2), я порадовался, сделал небольшую очистку, зарегистрировался, и теперь по незаметным для меня причинам, основная цель моего упражнения теперь терпит неудачу. test faliure

вариант использования: у меня есть клиент с существующей системой шаблонов писем, которая по сути является таблицей хэш-карт, но с составным ключом, чтобы разные клиенты могли выбирать изразличные шаблоны.

таблица имеет первичный ключ для идентификации уникальных строк и 2 столбца вспомогательных идентификаторов для идентификации клиента и шаблона, выраженные как category_id и sub_category_id соответственно.

Моя цель состоит в том, чтобы иметь одну сущность, которая, ретроспективно, мне, вероятно, следовало бы вызвать EmailTemplateMap, но в настоящее время она называется KeyValueCategories.

KeyValueCategories должен содержать карту токенов шаблона электронной почты в качестве ключей и полный компонент (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; 
        ...
}
...