Mysql
 sql >> Database >  >> RDS >> Mysql

Envers + MYSQL + List =SQLSyntaxErrorException:la chiave specificata era troppo lunga;

Ho dimenticato di dire che sto usando @Access(AccessType.PROPERTY) a livello di classe. Ad ogni modo, ho esteso i relativi metodi getter

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

Così fa effettivamente il trucco. Tuttavia, per non perdere informazioni, ho anche esteso tutti i metodi per aggiungere un elemento all'elenco, in questo modo

// 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);
}

Ora tutte le tabelle sono state create. Sfortunatamente ora ho un problema con NullPointer, che trovi qui Envers NullPointerException durante la creazione di dati di test - nel caso tu stia attraversando la stessa curva di apprendimento.