Je me demande s'il est possible d'utiliser des annotations pour conserver la attributes
carte dans la classe suivante en utilisant JPA2
public class Example {
long id;
// ....
Map<String, String> attributes = new HashMap<String, String>();
// ....
}
Comme nous avons déjà une base de données de production préexistante, les valeurs de attributes
pourraient idéalement correspondre à la table existante suivante:
create table example_attributes {
example_id bigint,
name varchar(100),
value varchar(100));
Map<String, SomeOtherClass>
example_attributes
devrait avoir une clé composite(example_id, name)
- c'est ce que hbm2ddl générera à partir de ce qui précède.Specified key was too long; max key length is 767 bytes
faire. La clé primaire qu'il tente de créer est une combinaison de varchar (255) et de @JoinColumn, qui dépasse la taille de colonne par défaut. Vous devez soit changer votre base de données, soit modifier votre @MapKeyColumn pour fournir une longueur:@MapKeyColumn(name="name", length=100)
Ceci est un exemple sur la façon de configurer une carte avec un contrôle sur les noms de colonnes et de tables et la longueur des champs.
la source