В моих объектах db у меня есть 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;
...
Я хочу, чтобы мои объекты db не зависели от какой-либо зависимости от поставщика, поэтому я использую только аннотации JPA и стараюсь избегать любых аннотаций ORMLite или Hibernate.
Однако при попытке сохранить такой объект с помощью ORMLite я получаю следующую ошибку:
java.sql.SQLException: ORMLite не знает, как сохранить класс [B для поля 'passwordHash'. поля 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[]
полей. Как я могу это сделать? Стоит ли вводить кастомный персистер? Есть другие предложения?
byte[]
какSerializable
, и я не хотел, чтобы он произвольно менял типы, поэтому я заставил пользователей выбирать тот или другой. - person Gray   schedule 19.06.2018