当java类有子类(JSONB)时,通过在JSONB上应用过滤器在postgresql中查询数据
我有一个表Employee,其fileds id、name、age、Addressas Jsonb字符串存储在Postgres数据库中当java类有子类(JSONB)时,通过在JSONB上应用过滤器在postgresql中查询数据,sql,postgresql,jsonb,postgresql-12,Sql,Postgresql,Jsonb,Postgresql 12,我有一个表Employee,其fileds id、name、age、Addressas Jsonb字符串存储在Postgres数据库中 @Entity @Table(name = "Employee") @TypeDef(name = "jsonb", typeClass = JsonBinaryType.class) public class Employee implements Serializable { @Id @Column @GeneratedValue(strategy = G
@Entity
@Table(name = "Employee")
@TypeDef(name = "jsonb", typeClass = JsonBinaryType.class)
public class Employee implements Serializable {
@Id
@Column
@GeneratedValue(strategy = GenerationType.AUTO)
int Id;
@Column
String name;
@Column
int age;
@Column(columnDefinition = "jsonb")
@Type(type="jsonb")
Address address; // this field is JSONB data stored in postgress DB
// setter and getters
}
public class Address implements Serializable {
String flatNo;
String area;
String state;
// setter and getters
}
数据库表数据格式:
身份证|姓名|年龄|地址
--+-----+---+----------------------------
20 |彼得| 16 |{地区:KKR,州:卡纳塔克邦,弗拉特诺:456}
21 |纳尼| 20 |{地区:CTM,州:TA,弗拉特诺:111}
我的问题是:我需要根据jsonb字段过滤数据
比如需要基于area=KKR的员工全行详细信息,因为area不是员工的直接字段,所以我无法过滤数据。我是博士后的新手。你能建议我怎么做吗 在SQL中,可以使用@>运算符执行此操作:
select *
from employee
where address @> '{"area": "KKR"}';
或者使用->>运算符为键返回单个值:
select *
from employee
where address ->> 'area' = 'KKR';