कोशिश की लेकिन कुछ समझ नहीं आया!
jsonb
. के साथ पूरी तरह से काम करने के लिए स्प्रिंग डेटा जेपीए . में (हाइबरनेट) प्रोजेक्ट व्लाद मिहालसिया के हाइबरनेट-प्रकार के लिब के साथ आपको बस निम्नलिखित करना चाहिए:
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();