sql >> Databáze >  >> RDS >> Mysql

Envers + MYSQL + List =SQLSyntaxErrorException:Zadaný klíč byl příliš dlouhý;

Zapomněl jsem zmínit, že používám @Access(AccessType.PROPERTY) na úrovni třídy. Každopádně jsem rozšířil související metody získávání

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

Tak vlastně dělá trik. Abychom však neztratili informace, rozšířil jsem také všechny metody o přidání prvku do seznamu, jako je to

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

Nyní jsou vytvořeny všechny tabulky. Bohužel mám nyní problém s NullPointer, který najdete zde Envers NullPointerException při vytváření testovacích dat - jen v případě, že procházíte stejnou křivkou učení.




  1. Oracle zápis do souboru

  2. vložit při aktualizaci duplicitního klíče

  3. Jak uniknout jednoduchým uvozovkám v Oracle?

  4. SQL Server Management Studio alternativy k procházení/úpravám tabulek a spouštění dotazů