zapis kolekcji bez tworzenia nowej tabeli w postresql

0

Jak poprawnie uzyc typu int[] z postresql uzywajac hibernate?
Zalezy mi na tym, aby nie tworzyc nowej tabeli (tylko kolumne) w bazie danych aby trzymac kolekcje intow w bazie danych.

0

Zserializować tablicę intów do JSONa i zapisać jako string.

Edit:
Aczkolwiek to tez zależy co ta tablica ma przechowywać.

0

@MrMadMatt: cos w stylu [1,2] , [1], [1,3]
Podasz jakis przyklad?

0

Postgres wspiera natywnie array typy, a co do kopania się z Hibernate to pewnie można znaleźć coś w necie, np:
https://www.baeldung.com/java-hibernate-map-postgresql-array
https://stackoverflow.com/questions/1647583/how-to-map-a-postgresql-array-with-hibernate

0

@masjav:

Pomysł byłby mniej więcej taki:

class MyDomainEntity {
    Long databaseId;
    String name;
    List<Integer> magicNumberCollection;
    //..getters setters
}

class MyDatabaseEntity {
    Long databaseId;
    String name;
    String magicNumberCollection;
    //..getters setters
}

class MyDomainWriteService {

    Gson gson = new GsonBuilder().create();

    void save(MyDomainEntity myDomain) {
        // map to db entity
        MyDatabaseEntity toSave = new MyDatabaseEntity();
        toSave.setDatabaseId(myDomain.getDatabaseId());
        toSave.setName(myDomain.getName());
        toSave.setMagicNumberCollection(gson.toJson(myDomain));
        
        repository.save(toSave);
    }
}

Ale od razu zaznaczam że pewnie da się to jakoś bardziej elegancko ogarnąć.

1 użytkowników online, w tym zalogowanych: 0, gości: 1