当前位置:  开发笔记 > 编程语言 > 正文

如何将JPA字段保留为clob?

如何解决《如何将JPA字段保留为clob?》经验,为你挑选了1个好方法。

我有一个不能很好地序列化到关系实体的类.因此,我想使用JPA作为CLOB来保持它(我可以将它序列化为String).我怎么用JPA这样做?

示例实体:

@Entity
@Table(name = "MY_TABLE")
public class Foo {
   @Id
   private Long id;
   private String simpleString;
   private Bar bar;
}

Bar是我想在MY_TABLE里面坚持作为CLOB的类.



1> Greg Kopff..:

你可以用它来注释字符串javax.persistence.Lob.

@Lob
@Basic(fetch = FetchType.LAZY)
private String simpleString;

LobJavadoc:

指定持久属性或字段应作为大对象持久保存到数据库支持的大对象类型.便携式应用程序在映射到数据库Lob类型时应使用Lob注释.当元素集合值是基本类型时,Lob注释可以与Basic注释或ElementCollection注释结合使用.Lob可以是二进制或字符类型.

Lob类型是从持久字段或属性的类型推断的,除字符串和基于字符的类型外,默认为Blob.

接下来,您可以将Bar字段设置为transient不存在:

@Transient
private Bar bar

然后在你的Bargetter中,你可以根据需要对它进行反序列化:

public Bar getBar()
{
  if (this.bar == null)
  {
    this.bar = deserialise(this.simpleString);
  }

  return this.bar;
}

线程安全留给读者练习.

此外,如果您需要在持久化之前立即执行此操作,也可以使用@PrePersist序列化Bar为其字符串形式.

推荐阅读
赛亚兔备_393
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有