Tuesday, 6 August 2013

Cannot add object to ORMLite because it's empty

Cannot add object to ORMLite because it's empty

I'm trying to add to ORMLite empty EmailBox. EmailBox has 3
ForeignCollection which are initialized through ORMLite
(getEmailBoxDao().getEmptyForeignCollection("never")).
The problem is that addOrUpdate method throws error: inserting to database
failed: INSERT INTO emailbox () VALUES ()
@DatabaseTable
public class EmailBox implements Serializable {
@DatabaseField(generatedId = true)
private int _id;
@ForeignCollectionField(eager = true)
private ForeignCollection<Email> never;
@ForeignCollectionField(eager = true)
private ForeignCollection<Email> inbox;
@ForeignCollectionField(eager = true)
private ForeignCollection<Email> later;
public EmailBox() {/* for ORMLite */}
@SuppressWarnings("unchecked")
public EmailBox(ForeignCollection<?> never, ForeignCollection<?> inbox,
ForeignCollection<?> later) {
this.never = (ForeignCollection<Email>) never;
this.inbox = (ForeignCollection<Email>) inbox;
this.later = (ForeignCollection<Email>) later;
}
...
}
class DatabaseHelper extends OrmLiteSqliteOpenHelper {
public EmailBox newEmptyEmailBox() throws java.sql.SQLException {
ForeignCollection<Object> never =
getEmailBoxDao().getEmptyForeignCollection("never");
ForeignCollection<Object> inbox =
getEmailBoxDao().getEmptyForeignCollection("inbox");
ForeignCollection<Object> later =
getEmailBoxDao().getEmptyForeignCollection("later");
return new EmailBox(never, inbox, later);
}
...
}
Stack trace:
08-06 17:52:11.898: E/SQLiteLog(21229): (1) near ")": syntax error
08-06 17:52:12.797: E/AndroidRuntime(21229): FATAL EXCEPTION: main
08-06 17:52:12.797: E/AndroidRuntime(21229): java.lang.RuntimeException:
Unable to start activity
ComponentInfo{company/company.activities.MainActivity_}:
java.lang.RuntimeException: java.sql.SQLException: Unable to run insert
stmt on object company.models.emails.EmailBox@4151dc88: INSERT INTO
`emailbox` () VALUES ()
08-06 17:52:12.797: E/AndroidRuntime(21229): at
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
08-06 17:52:12.797: E/AndroidRuntime(21229): at
android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
08-06 17:52:12.797: E/AndroidRuntime(21229): at
android.app.ActivityThread.access$600(ActivityThread.java:130)
08-06 17:52:12.797: E/AndroidRuntime(21229): at
android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
08-06 17:52:12.797: E/AndroidRuntime(21229): at
android.os.Handler.dispatchMessage(Handler.java:99)
08-06 17:52:12.797: E/AndroidRuntime(21229): at
android.os.Looper.loop(Looper.java:137)
08-06 17:52:12.797: E/AndroidRuntime(21229): at
android.app.ActivityThread.main(ActivityThread.java:4745)
08-06 17:52:12.797: E/AndroidRuntime(21229): at
java.lang.reflect.Method.invokeNative(Native Method)
08-06 17:52:12.797: E/AndroidRuntime(21229): at
java.lang.reflect.Method.invoke(Method.java:511)
08-06 17:52:12.797: E/AndroidRuntime(21229): at
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
08-06 17:52:12.797: E/AndroidRuntime(21229): at
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
08-06 17:52:12.797: E/AndroidRuntime(21229): at
dalvik.system.NativeStart.main(Native Method)
08-06 17:52:12.797: E/AndroidRuntime(21229): Caused by:
java.lang.RuntimeException: java.sql.SQLException: Unable to run insert
stmt on object company.models.emails.EmailBox@4151dc88: INSERT INTO
`emailbox` () VALUES ()
08-06 17:52:12.797: E/AndroidRuntime(21229): at
company.tools.database.DatabaseManager.addOrUpdateEmailBox(DatabaseManager.java:80)
08-06 17:52:12.797: E/AndroidRuntime(21229): at
company.activities.MainActivity.initializeEmailBox(MainActivity.java:175)
08-06 17:52:12.797: E/AndroidRuntime(21229): at
company.activities.MainActivity.prepare(MainActivity.java:125)
08-06 17:52:12.797: E/AndroidRuntime(21229): at
company.activities.MainActivity_.afterSetContentView_(MainActivity_.java:127)
08-06 17:52:12.797: E/AndroidRuntime(21229): at
company.activities.MainActivity_.setContentView(MainActivity_.java:133)
08-06 17:52:12.797: E/AndroidRuntime(21229): at
company.activities.MainActivity_.onCreate(MainActivity_.java:37)
08-06 17:52:12.797: E/AndroidRuntime(21229): at
android.app.Activity.performCreate(Activity.java:5008)
08-06 17:52:12.797: E/AndroidRuntime(21229): at
android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
08-06 17:52:12.797: E/AndroidRuntime(21229): at
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
08-06 17:52:12.797: E/AndroidRuntime(21229): ... 11 more
08-06 17:52:12.797: E/AndroidRuntime(21229): Caused by:
java.sql.SQLException: Unable to run insert stmt on object
company.models.emails.EmailBox@4151dc88: INSERT INTO `emailbox` () VALUES
()
08-06 17:52:12.797: E/AndroidRuntime(21229): at
com.j256.ormlite.misc.SqlExceptionUtil.create(SqlExceptionUtil.java:22)
08-06 17:52:12.797: E/AndroidRuntime(21229): at
com.j256.ormlite.stmt.mapped.MappedCreate.insert(MappedCreate.java:124)
08-06 17:52:12.797: E/AndroidRuntime(21229): at
com.j256.ormlite.stmt.StatementExecutor.create(StatementExecutor.java:394)
08-06 17:52:12.797: E/AndroidRuntime(21229): at
com.j256.ormlite.dao.BaseDaoImpl.create(BaseDaoImpl.java:308)
08-06 17:52:12.797: E/AndroidRuntime(21229): at
com.j256.ormlite.dao.BaseDaoImpl.createOrUpdate(BaseDaoImpl.java:334)
08-06 17:52:12.797: E/AndroidRuntime(21229): at
company.tools.database.DatabaseHelper.addOrUpdateEmailBox(DatabaseHelper.java:92)
08-06 17:52:12.797: E/AndroidRuntime(21229): at
company.tools.database.DatabaseManager.addOrUpdateEmailBox(DatabaseManager.java:78)
08-06 17:52:12.797: E/AndroidRuntime(21229): ... 19 more
08-06 17:52:12.797: E/AndroidRuntime(21229): Caused by:
java.sql.SQLException: inserting to database failed: INSERT INTO
`emailbox` () VALUES ()
08-06 17:52:12.797: E/AndroidRuntime(21229): at
com.j256.ormlite.misc.SqlExceptionUtil.create(SqlExceptionUtil.java:22)
08-06 17:52:12.797: E/AndroidRuntime(21229): at
com.j256.ormlite.android.AndroidDatabaseConnection.insert(AndroidDatabaseConnection.java:159)
08-06 17:52:12.797: E/AndroidRuntime(21229): at
com.j256.ormlite.stmt.mapped.MappedCreate.insert(MappedCreate.java:89)
08-06 17:52:12.797: E/AndroidRuntime(21229): ... 24 more
08-06 17:52:12.797: E/AndroidRuntime(21229): Caused by:
android.database.sqlite.SQLiteException: near ")": syntax error (code 1):
, while compiling: INSERT INTO `emailbox` () VALUES ()
08-06 17:52:12.797: E/AndroidRuntime(21229): at
android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native
Method)
08-06 17:52:12.797: E/AndroidRuntime(21229): at
android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:882)
08-06 17:52:12.797: E/AndroidRuntime(21229): at
android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:493)
08-06 17:52:12.797: E/AndroidRuntime(21229): at
android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
08-06 17:52:12.797: E/AndroidRuntime(21229): at
android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
08-06 17:52:12.797: E/AndroidRuntime(21229): at
android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31)
08-06 17:52:12.797: E/AndroidRuntime(21229): at
android.database.sqlite.SQLiteDatabase.compileStatement(SQLiteDatabase.java:992)
08-06 17:52:12.797: E/AndroidRuntime(21229): at
com.j256.ormlite.android.AndroidDatabaseConnection.insert(AndroidDatabaseConnection.java:145)
08-06 17:52:12.797: E/AndroidRuntime(21229): ... 25 more

No comments:

Post a Comment