NutzCN Logo
问答 postgresql 如何定义pojo 其中类型有 jsonb和 bit(n)
发布于 3264天前 作者 william-xian 3015 次浏览 复制 上一个帖子 下一个帖子
标签: dao postgresql

@Table('tbl_pojo')
public class Pojo{
@ColDefine(customType="jsonb",type=ColType.PS_JSON)
private String info;
}

10 回复

实际存储的数据结果是postgres=> select * from tbl_user;
id | name | password | _type | info
----------------------------------+------+----------+-------+-------------------------
e9e37abb85cc47b4a89a6188007c6f8e | name | password | 00001 | "{"a":1,"b":"b"}"
(1 row)
外面多了双引号,导致没法使用(pojo中用的是String)。

postgres=> select * from tbl_user;
id | name | password | _type | info
----------------------------------+------+----------+-------+-------------------------
e9e37abb85cc47b4a89a6188007c6f8e | name | password | 00001 | "{\"a\":1,\"b":\"b\"}"
(1 row)

@ColDefine(customType = "json", type = ColType.PSQL_JSON)

示例,来源自 PsqlJsonAdaptor 的 javadoc

public class Pet {

    public static Pet getInstance(ResultSet rs) throws SQLException {
        // 需要把所有字段从 ResultSet 取出,不然该属性无法映射
        Pet pet = new Pet();
        pet.setId(rs.getInt("id"));
        pet.setData(NutMap.WRAP(rs.getString("data")));
        return pet;
    }

    @Id
    private int id;

    @ColDefine(customType = "json", type = ColType.PSQL_JSON)
    private NutMap data;

    // ... 省略后面代码,包括字段声明以及 getter 和 setter
}

public class Jone {

    public static Jone(ResultSet rs) throws SQLException {
        // 需要把所有字段从 ResultSet 取出,不然该属性无法映射
        this.id = rs.getInt("id");
        this.info = Json.fromJson(Information.class, rs.getString("info"));
    }

    @Id
    private int id;

    @ColDefine(customType = "json", type = ColType.PSQL_JSON)
    private Information info;

    // ... 省略后面代码,包括字段声明以及 getter 和 setter
}

谢谢,jsonb也行,是自持的,字段类型改成private NutMap f; 可是bit类型该如何使用呢

连nutz这么牛的框架都对postgresql自持的不好,我们决定不使用postgresql数据库了。

1.r.54 支持字段自定义适配器了,这样任意类型都可以支持的

来自炫酷的 NutzCN

不是不支持,而是我还不知道有 bit 这种类型。而且现在 mysql 也支持 json 了

而且还有 Network Address Types 这种类型,我有点凌乱

添加回复
请先登陆
回到顶部