我正在尝试为我的 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 等效项的相当简单的类型 - String
、Integer
、Date
等。因此,将值作为 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/