sql >> データベース >  >> RDS >> PostgreSQL

SpringBoot +JPAを使用してPostgreSQLjsonbを保存する方法は?

    これを試しましたが、何も理解できませんでした!

    jsonbを完全に使用するには Spring Data JPA (Hibernate)VladMihalceaのhibernate-typeslibを使用したプロジェクトでは、次のようにする必要があります。

    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. ストアドプロシージャの結果をSQLServerの一時テーブルに挿入する方法

    2. T-SQLを使用して区切り文字を使用して文字列を分割するにはどうすればよいですか?

    3. PostgreSQLレプリケーション101のフェイルオーバー

    4. SQLServerでINSERTパススルークエリを実行する方法