Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Mapowanie EnumSet do mysql Set przy użyciu JPA 2.1

Wielkie dzięki! Musiałem użyć nieco innej wersji tego, co masz tutaj. U mnie zadziałało:

Miałem Enum uprawnień, które musiały być regulowane:

@Convert(converter = SetConverter.class)
@Column(name = "permission")
private EnumSet<Permission> permission;


//in a util and imported
...
@Converter
public static class SetConverter implements AttributeConverter<EnumSet<Permission>, String> {

    public String convertToDatabaseColumn(EnumSet<Permission> attribute) {
        StringBuilder sb = new StringBuilder();
        for (Permission c : attribute) { 
            sb.append(c + ",");
        }
        return sb.toString();
    }

    public EnumSet<Permission> convertToEntityAttribute(String dbData) {
        if (dbData == null) {
            dbData = "";
        }
        EnumSet<Permission> perm = EnumSet.of(Permission.DEFAULT); //default was a value I added.
        String[] persistencePermissions = StringUtils.trimAllWhitespace(dbData).toUpperCase().split(",");
        if (!StringUtils.isEmpty(StringUtils.trimAllWhitespace(dbData))) {
        try {
            for (String str : persistencePermissions) { 
            perm.add(Permission.valueOf(str));
        }}  
        catch (IllegalArgumentException IAE) {
            throw new Exception("INVALID_REQUEST");
        }}

        return perm;

    }

}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dlaczego wpisane słowo kluczowe nie jest przechowywane w bazie danych?

  2. Jaka jest zaleta używania try {} catch {} w porównaniu z {} else {}

  3. Zduplikuj / skopiuj rekordy w tej samej tabeli MySQL

  4. MySQL — alternatywy dla zagnieżdżonych podzapytań przy ograniczaniu agregacji danych w skorelowanym podzapytaniu

  5. Wydrukuj nazwę wszystkich działań bez maksymalnej ani minimalnej liczby uczestników