【发布时间】:2018-11-26 04:41:09
【问题描述】:
在我的数据库实体中,我有 byte[] 字段:
import javax.persistence.*;
/**
* Account
*/
@Entity
@Table(name = TABLE)
public class Account {
public static final String TABLE = "Account";
...
public final static String COLUMN_PASSWORD_HASH = "passwordHash";
@Column(name = COLUMN_PASSWORD_HASH, nullable = false)
public byte[] passwordHash;
...
我想让我的数据库实体不依赖任何供应商,所以我只使用 JPA 注释并尽量避免使用任何 ORMLite 或 Hibernate 注释。
但是,当尝试使用 ORMLite 保存此类实体时,出现以下错误:
java.sql.SQLException:ORMLite 不知道如何为字段“passwordHash”存储类 [B。 byte[] 字段必须指定 dataType=DataType.BYTE_ARRAY 或 SERIALIZABLE
据我了解,由于某种原因,ORMLite 不喜欢 BYTE_ARRAY 用于 byte[],并且需要使用 com.j256.ormlite.field.Datatype ORMLite 注释标记字段,并引入了对 ormlite-core 模块的显式依赖,这就是我想要避免的(我有 Hibernate DAO impl 和 ORMLite DAO impl,我不想混合所有内容。
我的初衷是将ORMLite配置为首选BYTE_ARRAY作为byte[]字段。我该怎么做?我应该引入自定义持久化器吗?还有其他建议吗?
【问题讨论】:
-
仅供参考:ORMLite 最初将
byte[]视为Serializable,我不希望它随意更改类型,所以我强迫用户选择其中一个。
标签: java database jpa persistence ormlite