我什么时候应该在 JPA 中使用 @javax.persistence.Lob
注释?该注解可以注解哪些数据类型?
原文由 Dev 发布,翻译遵循 CC BY-SA 4.0 许可协议
我什么时候应该在 JPA 中使用 @javax.persistence.Lob
注释?该注解可以注解哪些数据类型?
原文由 Dev 发布,翻译遵循 CC BY-SA 4.0 许可协议
根据: https ://docs.oracle.com/javaee/7/api/javax/persistence/Lob.html
@Lob 指定持久属性或字段应作为大对象持久保存到数据库支持的大对象类型。
@javax.persistence.Lob 表示带注释的字段在数据库中应表示为 BLOB(二进制数据)。
我想在数据库中它不仅可以是二进制数据,还可以是基于字符的数据。因为我们可以有 BLOB 和 CLOB。以下是 java 代码中的示例:
@Lob
@Column(name = "CHARS", columnDefinition = "CLOB")
private String chars;`
@Lob
@Basic(fetch = FetchType.LAZY)
@Column(name = "DATA", columnDefinition = "BLOB", nullable = false)
private byte[] data;
原文由 levrun 发布,翻译遵循 CC BY-SA 3.0 许可协议
15 回答8.1k 阅读
8 回答6.3k 阅读
1 回答4.1k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
1 回答2.1k 阅读✓ 已解决
@javax.persistence.Lob
表示带注释的字段在数据库中应表示为 BLOB(二进制数据)。您可以使用此注释注释任何
Serializable
数据类型。在 JPA 中,在持久化(检索)时,字段内容将使用标准 Java 序列化进行序列化(反序列化)。@Lob
的常用用法是注释实体中的HashMap
字段,以存储一些未映射到数据库列的对象属性。这样,所有未映射的值都可以以二进制表示形式存储在数据库中的一列中。当然,付出的代价是,由于它们以二进制格式存储,因此无法使用 JPQL/SQL 搜索它们。