在 Rails 中,我们有一个serialize
方法,它接受一个属性(或列),当保存在数据库中时,该属性(或列)将自动序列化为 json。
保存并查询该对象后,可以将对象序列化的 json 作为真实的类属性进行访问。
我的问题是:是否有任何内置或包可以将此功能添加到休眠?如果是否定的,是否可以使用反射 java api 动态创建属性?
我对此提出质疑是因为我对学习一点 Java 以及你可以用 JVM 做什么很感兴趣。
谢谢。
我真的不明白你想要什么,对不起。
但是,如果您想要一个对象的字段,其值以单列中的序列化形式保存到数据库中,而不是映射到另一个表中的行的引用,那么这是 JPA 的标准部分。您只需定义一个字段,然后不要使用关系注释对其进行注释。我相信该字段的类型必须是 的子类型Serializable
,但(遗憾的是)。例如:
@Entity
public class Colleague {
@Id
private int id;
private HashMap<Date, String> diary;
}
这将映射到这样的表:
create table Colleague (
id integer primary key,
diary blob
)
现在,您提到了 JSON。这不会使用 JSON;它将使用标准的 Java 序列化。我认为没有什么特别理智的方法可以让它使用 JSON 来代替。最简单的可能是将要序列化的对象包装在 JSONifying 包装器中。不是太难,但有点奇怪。
尽管如此,即使这不是 JSON,它的用处也大致相同:数据进入数据库,然后返回。
再说一次,不知道这是否真的是你想要的,对不起!
您可以使用现有的 JSON 库(如 Jackson 或 Gson)为此编写自己的自定义用户类型。
我不认为 Hibernate 有这样的工具。但我看到了两种模拟这种行为的方法