PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

jak przechowywać jsonb PostgreSQL za pomocą SpringBoot + JPA?

Próbowałem tego, ale nic nie zrozumiałem!

Aby w pełni pracować z jsonb w Spring Data JPA (Hibernacja) z biblioteką typów hibernacji Vlada Mihalcei, powinieneś po prostu wykonać następujące czynności:

1) Dodaj tę bibliotekę do swojego projektu:

<dependency>
    <groupId>com.vladmihalcea</groupId>
    <artifactId>hibernate-types-52</artifactId>
    <version>2.2.2</version>
</dependency>

2) Następnie użyj jego typów w swoich encjach, na przykład:

@Data
@NoArgsConstructor
@Entity
@Table(name = "parents")
@TypeDef(name = "jsonb", typeClass = JsonBinaryType.class)
public class Parent implements Serializable {

    @Id
    @GeneratedValue(strategy = SEQUENCE)
    private Integer id;

    @Column(length = 32, nullable = false)
    private String name;

    @Type(type = "jsonb")
    @Column(columnDefinition = "jsonb")
    private List<Child> children;

    @Type(type = "jsonb")
    @Column(columnDefinition = "jsonb")
    private Bio bio;

    public Parent(String name, List children, Bio bio) {
        this.name = name;
        this.children = children;
        this.bio = bio;
    }
}

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Child implements Serializable {
    private String name;
}

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Bio implements Serializable {
    private String text;
}

Wtedy będziesz mógł użyć na przykład prostego JpaRepository do pracy z twoimi obiektami:

public interface ParentRepo extends JpaRepository<Parent, Integer> {
}
parentRepo.save(new Parent(
                     "parent1", 
                     asList(new Child("child1"), new Child("child2")), 
                     new Bio("bio1")
                )
);
Parent result = parentRepo.findById(1);
List<Child> children = result.getChildren();
Bio bio = result.getBio();


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Psycopg2 nie lubi nazw tabel zaczynających się od małej litery

  2. Tworzenie tabel tymczasowych w SQL

  3. Czy można wykonywać zapytania między bazami danych za pomocą PostgreSQL?

  4. Analiza porównawcza zarządzanych rozwiązań chmurowych PostgreSQL — część pierwsza:Amazon Aurora

  5. Jak zmapować pole tablicy PostgreSQL w Django ORM?