Hibernate持久化Object成员

时间:2013-05-08 14:07:15

标签: java hibernate jpa persistence

有没有办法保持java.lang.Object类型的Entity成员?

假设我有一个实体DynamicProperty,它有一个成员

private String name;
private Object value;

值可以是几种类型,基本上是非复杂的(String,Boolean,Integer,Decimal,Enum ......)

有什么办法吗?以及DB(Oracle)列类型应该是什么。

2 个答案:

答案 0 :(得分:0)

如果它们是基本类型,您可以随时尝试将它们存储为字符串,然后将它们转换为getter中的右类。

还有另一种选择 - 你可以创建一个类,它将保存值类型,并且将包含必要类型的字段,但只有一个被设置。像

这样的东西
class Foo
{
    Integer a;
    Double b;
    String c;
    int type;

    //getters and setters

    public Object getObject()
    {
        if (type == 1)
            return a;
        else if (type == 2)
            return b;
        return c;
    }
}

这是一个解决方法,但它应该工作。我认为不可能将Object保持为抽象。

另外,请查看@Embedded注释,它可能会有所帮助。

答案 1 :(得分:0)

我找到了一个解决方案......因为我的对象可以定义为几种有限类型,基本类型我将对象标记为可序列化的DB列为BLOB并且它有效。

@Type(type = "serializable")
private Object value;

有没有人知道这个表现呢?或任何其他可能发生的问题..