sql >> Database >  >> RDS >> Mysql

Envers + MYSQL + List =SQLSyntaxErrorException:Opgegeven sleutel was te lang;

Ik ben vergeten te vermelden dat ik @Access(AccessType.PROPERTY) gebruik op klasniveau. Hoe dan ook, ik heb de gerelateerde gettermethoden uitgebreid

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

Dus eigenlijk doet de truc. Om echter geen informatie te verliezen, heb ik ook alle methoden uitgebreid om een ​​element aan de lijst toe te voegen, zoals zo

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

Nu zijn alle tabellen gemaakt. Helaas heb ik nu een NullPointer-probleem, dat je hier vindt Envers NullPointerException bij het maken van testgegevens - voor het geval je dezelfde leercurve doormaakt.




  1. GROUP_CONCAT() Functie in MySQL

  2. Retourneer een opgeslagen procedure uit cursorvariabele in cx_oracle

  3. Hoe een rij in orakel te verwijderen

  4. Relatiekenmerken vertalen van ER-diagram naar SQL