有没有办法持久化 java.lang.Object 类型的 Entity 成员?
假设我有一个拥有成员的实体 DynamicProperty
private String name;
private Object value;
值可以是几种类型,基本上是非复杂的(字符串、布尔值、整数、十进制、枚举......)
有什么办法吗?以及 DB(Oracle) 列类型应该是什么。
有没有办法持久化 java.lang.Object 类型的 Entity 成员?
假设我有一个拥有成员的实体 DynamicProperty
private String name;
private Object value;
值可以是几种类型,基本上是非复杂的(字符串、布尔值、整数、十进制、枚举......)
有什么办法吗?以及 DB(Oracle) 列类型应该是什么。
我找到了一个解决方案......因为我的对象可以定义为几种有限类型,基本类型我将对象标记为可序列化的 DB 列作为 BLOB 并且它有效。
@Type(type = "serializable")
private Object value;
有没有人知道这方面的表现?或可能发生的任何其他问题..
如果它们是基本类型,您始终可以尝试将它们存储为字符串,然后将它们转换为您的 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;
}
}
这是一种解决方法,但应该可以。我认为不可能将对象持久化为抽象的。
另外,看看@Embedded
注释,它可能会有所帮助。