Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Envers + MYSQL + List =SQLSyntaxErrorException:A chave especificada era muito longa;


Esqueci de mencionar que estou usando @Access(AccessType.PROPERTY) no nível de classe. De qualquer forma, estendi os métodos getter relacionados
@ElementCollection  
@Column(length=175)     // keep in sync with maxDBStringLength
public List<String> getEnvironmentalInterfaces() {
    return environmentalInterfaces;
}

Assim realmente faz o truque. No entanto, para não perder informações, também estendi todos os métodos para adicionar um elemento à lista, assim
// 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);
}

Agora todas as tabelas estão criadas. Infelizmente, agora tenho um problema com o NullPointer, que você encontra aqui Envers NullPointerException ao criar dados de teste - apenas no caso de você estar passando pela mesma curva de aprendizado.