Mysql
 sql >> Base de données >  >> RDS >> Mysql

Envers + MYSQL + List =SQLSyntaxErrorException :la clé spécifiée était trop longue ;

J'ai oublié de mentionner que j'utilise @Access(AccessType.PROPERTY) au niveau de la classe. Quoi qu'il en soit, j'ai étendu les méthodes getter associées

@ElementCollection  
@Column(length=175)     // keep in sync with maxDBStringLength
public List<String> getEnvironmentalInterfaces() {
    return environmentalInterfaces;
}

Ainsi fait réellement l'affaire. Cependant, afin de ne pas perdre d'informations, j'ai également étendu toutes les méthodes pour ajouter un élément à la liste, comme ceci

// Must be in sync with @Column(length=175)  definitions
protected static int maxDBStringLength = Constants.maxDBStringLength;

public void addEnvironmentalInterfaces(String environmentalInterface) throws StringTooLongException {
    if(environmentalInterface.length() > maxDBStringLength) {
        throw new StringTooLongException(maxDBStringLength, environmentalInterface.length());
    }
    environmentalInterfaces.add(environmentalInterface);
}

Maintenant, toutes les tables sont créées. Malheureusement, j'ai maintenant un problème NullPointer, que vous trouverez ici Envers NullPointerException lors de la création de données de test - juste au cas où vous traverseriez la même courbe d'apprentissage.