PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

как да съхранявате PostgreSQL jsonb с помощта на SpringBoot + JPA?

Опитах това, но нищо не разбрах!

За да работите напълно с jsonb в JPA Spring Data (Hibernate) проект с библиотеката hibernate-types на Vlad Mihalcea, трябва просто да направите следното:

1) Добавете тази библиотека към вашия проект:

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

2) След това използвайте неговите типове във вашите обекти, например:

@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;
}

Тогава ще можете да използвате, например, обикновен JpaRepository за работа с вашите обекти:

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. Предоставяне на привилегии за бъдещи таблици в PostgreSQL?

  2. PostgreSQL – Как да елиминирате повтарящи се стойности

  3. Анотацията на Spring Data @CreatedDate не работи за мен

  4. n-ти процентил изчисления в postgresql

  5. Мащабиране на връзките в PostgreSQL с помощта на пул на връзки