La définition suivante de la colonne JPA génère un type de données « entier » par défaut sur toutes les bases de données (par exemple, h2, mysql, postgres)hbm2ddl sur une colonne basée sur GenericEnumUserType
@Column(name = "type", nullable = false)
@Type(type = "com.mycompany.hibernate.usertype.GenericEnumUserType", parameters = {
@Parameter(name = "enumClass", value = "com.mycompany.model.DegreeType"),
@Parameter(name = "identifierMethod", value = "toInt"),
@Parameter(name = "valueOfMethod", value = "fromInt") })
@NotNull
private DegreeType type;
Je voudrais utiliser le stockage minimal pour Ce champ préfèrerait donc utiliser le paramètre columnDefinition pour la génération de schema2ddl. Mais ressemble à tinyint n'est pas supporté dans postgres, mais est pris en charge dans d'autres bases de données mentionnées ci-dessus.
Serait-il possible de générer différents fichiers SQL en fonction du type de base de données. 1. Quelle serait la meilleure approche pour y parvenir? 2. Quel serait le meilleur type de données (avec un minimum de stockage) pouvant être utilisé à cette fin? Serait-ce smallint?
Merci et apprécie l'aide, ce qui rend le type comme TINYINT a fait l'affaire. En passant, je stocke les énumérations comme entiers et par conséquent cette abstraction est nécessaire en plus de GenericEnum. Puisque mes valeurs d'énumération sont localisables, je ne peux pas utiliser l'annotation @Enumerated qui stocke toutes les valeurs sous forme de chaînes – Joe