Прошлой ночью я работал над примером кода. Я завершил пример, все тесты проходили (с 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;
...
}