J'essaie de persister la classe suivante avec OrmLite:Est-il possible d'avoir un champ enum dans une classe persisté avec OrmLite?
public class Field {
@DatabaseField(id = true)
public String name;
@DatabaseField(canBeNull = false)
public FieldType type;
...
}
Le FieldType
est un public enum
. Le champ correspondant à type
est une chaîne dans SQLite (ne prend pas en charge les énumérations). Lorsque je tente de l'utiliser, je reçois l'exception suivante:
INFO [main] (SingleConnectionDataSource.java:244) - Established shared JDBC Connection: [email protected]
Exception in thread "main" org.springframework.beans.factory.BeanInitializationException: Initialization of DAO failed; nested exception is java.lang.IllegalArgumentException: Unknown field class class enums.FieldType for field FieldType:name=type,class=class orm.Field
at org.springframework.dao.support.DaoSupport.afterPropertiesSet(DaoSupport.java:51)
at orm.FieldDAO.getInstance(FieldDAO.java:17)
at orm.Field.fromString(Field.java:23)
at orm.Field.main(Field.java:38)
Caused by: java.lang.IllegalArgumentException: Unknown field class class enums.FieldType for field FieldType:name=type,class=class orm.Field
at com.j256.ormlite.field.FieldType.<init>(FieldType.java:54)
at com.j256.ormlite.field.FieldType.createFieldType(FieldType.java:381)
at com.j256.ormlite.table.DatabaseTableConfig.fromClass(DatabaseTableConfig.java:82)
at com.j256.ormlite.dao.BaseJdbcDao.initDao(BaseJdbcDao.java:116)
at org.springframework.dao.support.DaoSupport.afterPropertiesSet(DaoSupport.java:48)
... 3 more
Alors, comment puis-je dire OrmLite, les valeurs du côté Java sont d'un enum
?
Merci, vous faites du bon travail, de toute façon pensez-vous qu'il serait préférable de vous contacter via le formulaire ou ce site? Je suppose que ce dernier pourrait économiser votre temps quand les gens google pour ce qu'ils veulent d'abord – htf
Pourquoi est-il recommandé d'utiliser ENUM_INTEGER? Sûrement, le nom de l'entrée enum est moins susceptible de changer que l'ordre ou le montant des entrées. – pablisco
Ce n'est pas recommandé. Avez-vous lu la réponse @pablisco? – Gray