Gostaria de saber se é possível usar anotações para persistir o attributes
mapa na classe a seguir usando JPA2
public class Example {
long id;
// ....
Map<String, String> attributes = new HashMap<String, String>();
// ....
}
Como já temos um banco de dados de produção pré-existente, idealmente os valores de attributes
poderiam ser mapeados para a seguinte tabela existente:
create table example_attributes {
example_id bigint,
name varchar(100),
value varchar(100));
Map<String, SomeOtherClass>
example_attributes
deve ter uma chave composta(example_id, name)
- que é o que hbm2ddl irá gerar a partir do acima.Specified key was too long; max key length is 767 bytes
fazer isso. A chave primária que ele tenta criar é uma combinação de varchar (255) e @JoinColumn, que excede o tamanho de coluna padrão. Você precisa alterar seu banco de dados ou modificar seu @MapKeyColumn para fornecer um comprimento:@MapKeyColumn(name="name", length=100)
Este é um exemplo de como configurar um mapa com controle sobre os nomes das colunas e tabelas e comprimento dos campos.
fonte