我对多语言数据库有以下问题。我需要将每种语言的属性文件存储到数据库中。我在实体中使用了 CLOB 数据类型和 String 字段,我在 @PrePersist 和 @PreUpdate 上将 java.util.Properties 转换为 String,在 @PostLoad 中我将它从字符串转回属性。这对于德语本地化效果很好,但不适用于法语。可能值得一提的是,我到处都在使用 ISO8859-1 编码
@Lob
// length is there only for hypersonic sql (junit tests), otherwise clob(255) is generated
@Column(name = "PROPERTIES_BLOB", length = 65536, nullable = false)
private String blob;
@Transient
private Properties properties;
@PostLoad
public void postLoad() throws IOException
{
try (StringReader reader = new StringReader(blob))
{
this.properties = new Properties();
this.properties.load(reader);
}
}
我试过转义特殊的法语字符,然后从我的角度来看,clob 很好。但是,当我将数据加载到实体时,JPA 确实取消了字符转义并搞砸了法语字符。
我通过将我的 clob 转换为 blob 并将实体中的列转换为 byte[] 数组来解决了这个问题,这使我能够解决这个问题并使用 Properties.load(InputStream stream) 方法进行转义,即使对于法语也可以人物
然而,我的问题是如何通过将 clob 保存在数据库中来管理它(它包含的内容清晰可见,等等)。在将数据从 clob 写入字符串时,我需要强制 JPA 或休眠不要转义字符。它有一些配置属性吗?