java - 将通用 java 类型保存/加载到 postgresql 数据库列

标签 java generics postgresql

我正在尝试为我的 Java 应用程序实现一些简单的审计功能。这是我的审计类的片段:

public class Audit<C, T> {
    public final Class<C> modifiedClass;
    public final Date modificationTime;
    public final MyFieldMeta<C, T> fieldMeta; //contains Class<T>
    public final T newValue;

    //constructor, etc...
}

当谈到持久化这些审计对象时,我宁愿只用一张表来存储所有种类,而不管 T 是什么。我正在使用 postresql,我想知道将 newValue 保存到列,然后再将其取回的最佳方法是什么。

newValue 仅限于具有 postgresql 等效项的相当简单的类型 - StringIntegerDate 等。因此,将值作为 text 并将类型作为 varchar 存储在单独的列中,然后将它们映射回 java 中不会太难。有更巧妙的方法吗?

最佳答案

一旦您“扁平化”了数据库中的数据类型,您将依赖逻辑将其转换回来,这可能会导致问题。考虑值:11.12

那是章节编号中的文本 11.12 吗? 11.12 是货币值(value)吗?是 12 月 11 日吗?

除非你能保证一个值总是可以明确地映射到一个类型,否则唯一的其他方法是向字段添加一个额外的类型标记,然后你必须解析它,例如:s11 .12 表示“值为 11.12 的字符串”。

关于java - 将通用 java 类型保存/加载到 postgresql 数据库列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5946110/

相关文章:

java - 如何授予 Tomcat 9 访问其他文件的权限

java - 如何仅更新已更改的属性 - Spring MVC

c# - 匿名类型 - 是否有任何显着特征?

java - 使用 Java 泛型通过对象列表递归对象(每个对象都有另一个对象列表)

sql - 如何简化嵌套SQL交叉连接?

java - 如何将Spring bean注入(inject)到Apache Commons Pooling类流中反射生成的类中

java.lang.noclassdeffounderror 谷歌播放服务

sql - 如何从表中删除多条记录(在输入中获取多个值)

基于 T 类型属性的通用结构的 Swift 扩展

postgresql - 事务导致语法错误