Zastanawiam się, czy możliwe jest użycie adnotacji do attributes
utrwalenia mapy w następującej klasie przy użyciu JPA2
public class Example {
long id;
// ....
Map<String, String> attributes = new HashMap<String, String>();
// ....
}
Ponieważ mamy już istniejącą produkcyjną bazę danych, idealnie attributes
byłoby, gdyby wartości były mapowane na następującą istniejącą tabelę:
create table example_attributes {
example_id bigint,
name varchar(100),
value varchar(100));
Map<String, SomeOtherClass>
example_attributes
powinien mieć klucz złożony(example_id, name)
- to właśnie hbm2ddl wygeneruje z powyższego.Specified key was too long; max key length is 767 bytes
to. Klucz podstawowy, który próbuje utworzyć, jest połączeniem varchar (255) i @JoinColumn, który przekracza domyślny rozmiar kolumny. Musisz zmienić bazę danych lub zmodyfikować @MapKeyColumn, aby podać długość:@MapKeyColumn(name="name", length=100)
To jest przykład konfigurowania mapy z kontrolą nad nazwami kolumn i tabel oraz długością pól.
źródło