2015-08-25 2 views
1

Я использую OrmLite в приложении для Android и получаю спорадические сбои со следующей ошибкой. Похоже, он жалуется на то, что не найдет метод геттера.Не удалось найти подходящий метод get для private boolean в OrmLite

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.app/com.app.MainActivity_}: java.lang.IllegalArgumentException: Could not find appropriate get method for private boolean com.app.model.User.isKeepAlive 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2693) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2760) 
    at android.app.ActivityThread.access$900(ActivityThread.java:177) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1448) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:145) 
    at android.app.ActivityThread.main(ActivityThread.java:5944) 
    at java.lang.reflect.Method.invoke(Method.java) 
    at java.lang.reflect.Method.invoke(Method.java:372) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1389) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1184) 
Caused by: java.lang.IllegalArgumentException: Could not find appropriate get method for private boolean com.app.model.User.isKeepAlive 
    at com.j256.ormlite.field.DatabaseFieldConfig.findGetMethod(DatabaseFieldConfig.java:548) 
    at com.j256.ormlite.field.FieldType.(FieldType.java:236) 
    at com.j256.ormlite.table.DatabaseTableConfig.convertFieldConfigs(DatabaseTableConfig.java:236) 
    at com.j256.ormlite.table.DatabaseTableConfig.extractFieldTypes(DatabaseTableConfig.java:101) 
    at com.j256.ormlite.dao.BaseDaoImpl.initialize(BaseDaoImpl.java:153) 
    at com.j256.ormlite.dao.BaseDaoImpl.(BaseDaoImpl.java:128) 
    at com.j256.ormlite.dao.BaseDaoImpl.(BaseDaoImpl.java:119) 
    at com.j256.ormlite.dao.BaseDaoImpl$5.(BaseDaoImpl.java:921) 
    at com.j256.ormlite.dao.BaseDaoImpl.createDao(BaseDaoImpl.java:921) 
    at com.j256.ormlite.dao.DaoManager.createDao(DaoManager.java:72) 
    at com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper.getDao(OrmLiteSqliteOpenHelper.java:279) 
    at com.app.utility.DatabaseHelper.getUserDao(DatabaseHelper.java:126) 
    at com.app.controller.UserController.getLoggedInUser(UserController.java:318) 
    at com.app.controller.UserController.isLoggedIn(UserController.java:304) 

Странная вещь, у меня есть метод GET, определенный в моем классе сущностей, как показано ниже:

@DatabaseField(useGetSet = true) 
private boolean isKeepAlive; 

/** 
* @return the isKeepAlive 
*/ 
public boolean getIsKeepAlive() { 
    return isKeepAlive; 
} 

/** 
* @param isKeepAliveSet the isKeepAliveSet to set 
*/ 
public void setIsKeepAlive(boolean isKeepAlive) { 
    this.isKeepAlive = isKeepAlive; 
} 
+0

Немного странно иметь логическое значение 'isKeepAlive'. Обычно логическим является 'keepAlive', а _method_ -' isKeepAlive'. Тем не менее я удивлен, что ORMLite не справляется с этим. – Gray

+0

Это может быть проблема локали. У Trunk есть исправление, которое улучшает работу с капитализацией имен методов. – Gray

ответ

0

Спасибо за предложение @Gray. Обновление моих методов и использование последней из соединительной линии, похоже, решило мою проблему.

+0

Это не ответ, но это может быть так. Вы должны [редактировать] в основной информации ответа, чтобы будущие пользователи могли извлечь из этого выгоду. Комментарии являются временными и не индексируются поисковыми системами, поэтому они не являются отличным местом для ответов. – Mogsdad