sql >> Base de Datos >  >> RDS >> Mysql

Envers + MYSQL + List =SQLSyntaxErrorException:la clave especificada era demasiado larga;

Olvidé mencionar que estoy usando @Access(AccessType.PROPERTY) en el nivel de clase. De todos modos, amplié los métodos getter relacionados

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

Por lo tanto, en realidad hace el truco. Sin embargo, para no perder información, también extendí todos los métodos para agregar un elemento a la lista, así

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

Ahora todas las tablas están creadas. Desafortunadamente, ahora tengo un problema con NullPointer, que puede encontrar aquí NullPointerException al crear datos de prueba - en caso de que estés pasando por la misma curva de aprendizaje.