Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/183.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ORMLite Android和ForeignCollection索引1处的绑定值为空_Java_Android_Ormlite_Foreign Collection - Fatal编程技术网

Java ORMLite Android和ForeignCollection索引1处的绑定值为空

Java ORMLite Android和ForeignCollection索引1处的绑定值为空,java,android,ormlite,foreign-collection,Java,Android,Ormlite,Foreign Collection,我在组织与奥姆莱特的多对多关系时遇到了一些问题,我无法克服。我有一个用户,希望在他们之间建立友谊关系,因此我使用以下代码: 我有User.java类: public class User { @DatabaseField(id = true, columnName = "_id") public long id; @ForeignCollectionField(columnName = COLUMN_FRIENDS, foreignFieldName = "user")

我在组织与奥姆莱特的多对多关系时遇到了一些问题,我无法克服。我有一个用户,希望在他们之间建立友谊关系,因此我使用以下代码: 我有User.java类:

public class User {

    @DatabaseField(id = true, columnName = "_id")
    public long id;
    @ForeignCollectionField(columnName = COLUMN_FRIENDS, foreignFieldName = "user")
    public ForeignCollection<UserFriendship> friends;
}
我创建了一个简单的测试来检查一切是否正常:

public testUserFriendship() {
        User user = weClient.getEntityFactory().createUser();
        user.id = 101;
        user.nickName = "user";
        User friend = weClient.getEntityFactory().createUser();
        friend.id = 102;
        friend.nickName = "user2";

        user.friends.add(new UserFriendship(user, friend));
        dao.getUserDAO().createOrUpdate(user);
        dao.getUserDAO().createOrUpdate(friend);

        User user2;
        user2 = dao.getUserDAO().queryForId(user.id);

        assertEquals(user.friends.size(), user2.friends.size());
}
测试返回错误,下面是回溯:

java.lang.IllegalArgumentException: the bind value at index 1 is null
09-25 10:39:26.509    8101-8114/? W/System.err﹕ at android.database.sqlite.SQLiteProgram.bindString(SQLiteProgram.java:164)
09-25 10:39:26.509    8101-8114/? W/System.err﹕ at android.database.sqlite.SQLiteProgram.bindAllArgsAsStrings(SQLiteProgram.java:200)
09-25 10:39:26.509    8101-8114/? W/System.err﹕ at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:47)
09-25 10:39:26.509    8101-8114/? W/System.err﹕ at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1314)
09-25 10:39:26.509    8101-8114/? W/System.err﹕ at android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1253)
09-25 10:39:26.509    8101-8114/? W/System.err﹕ at com.j256.ormlite.android.compat.JellyBeanApiCompatibility.rawQuery(JellyBeanApiCompatibility.java:21)
09-25 10:39:26.509    8101-8114/? W/System.err﹕ at com.j256.ormlite.android.AndroidCompiledStatement.getCursor(AndroidCompiledStatement.java:180)
09-25 10:39:26.509    8101-8114/? W/System.err﹕ at com.j256.ormlite.android.AndroidCompiledStatement.runQuery(AndroidCompiledStatement.java:65)
09-25 10:39:26.509    8101-8114/? W/System.err﹕ at com.j256.ormlite.stmt.SelectIterator.<init>(SelectIterator.java:55)
09-25 10:39:26.509    8101-8114/? W/System.err﹕ at com.j256.ormlite.stmt.StatementExecutor.buildIterator(StatementExecutor.java:247)
09-25 10:39:26.509    8101-8114/? W/System.err﹕ at com.j256.ormlite.dao.BaseDaoImpl.createIterator(BaseDaoImpl.java:964)
09-25 10:39:26.509    8101-8114/? W/System.err﹕ at com.j256.ormlite.dao.BaseDaoImpl.iterator(BaseDaoImpl.java:533)
09-25 10:39:26.509    8101-8114/? W/System.err﹕ at com.j256.ormlite.dao.LazyForeignCollection.seperateIteratorThrow(LazyForeignCollection.java:313)
09-25 10:39:26.509    8101-8114/? W/System.err﹕ at com.j256.ormlite.dao.LazyForeignCollection.iteratorThrow(LazyForeignCollection.java:71)
09-25 10:39:26.509    8101-8114/? W/System.err﹕ at com.j256.ormlite.dao.LazyForeignCollection.closeableIterator(LazyForeignCollection.java:60)
09-25 10:39:26.509    8101-8114/? W/System.err﹕ at com.j256.ormlite.dao.LazyForeignCollection.iterator(LazyForeignCollection.java:47)
09-25 10:39:26.509    8101-8114/? W/System.err﹕ at com.j256.ormlite.dao.LazyForeignCollection.size(LazyForeignCollection.java:106)
09-25 10:39:26.509    8101-8114/? W/System.err﹕ at co.wecommunicate.test.ORMTest.testUserFriendship(ORMTest.java:179)enter code here

当我开始调试库时,我发现实际上,原因很简单:您无法从创建的实体对象获取迭代器,只能通过还原的实体获取迭代器。
java.lang.IllegalArgumentException: the bind value at index 1 is null
09-25 10:39:26.509    8101-8114/? W/System.err﹕ at android.database.sqlite.SQLiteProgram.bindString(SQLiteProgram.java:164)
09-25 10:39:26.509    8101-8114/? W/System.err﹕ at android.database.sqlite.SQLiteProgram.bindAllArgsAsStrings(SQLiteProgram.java:200)
09-25 10:39:26.509    8101-8114/? W/System.err﹕ at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:47)
09-25 10:39:26.509    8101-8114/? W/System.err﹕ at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1314)
09-25 10:39:26.509    8101-8114/? W/System.err﹕ at android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1253)
09-25 10:39:26.509    8101-8114/? W/System.err﹕ at com.j256.ormlite.android.compat.JellyBeanApiCompatibility.rawQuery(JellyBeanApiCompatibility.java:21)
09-25 10:39:26.509    8101-8114/? W/System.err﹕ at com.j256.ormlite.android.AndroidCompiledStatement.getCursor(AndroidCompiledStatement.java:180)
09-25 10:39:26.509    8101-8114/? W/System.err﹕ at com.j256.ormlite.android.AndroidCompiledStatement.runQuery(AndroidCompiledStatement.java:65)
09-25 10:39:26.509    8101-8114/? W/System.err﹕ at com.j256.ormlite.stmt.SelectIterator.<init>(SelectIterator.java:55)
09-25 10:39:26.509    8101-8114/? W/System.err﹕ at com.j256.ormlite.stmt.StatementExecutor.buildIterator(StatementExecutor.java:247)
09-25 10:39:26.509    8101-8114/? W/System.err﹕ at com.j256.ormlite.dao.BaseDaoImpl.createIterator(BaseDaoImpl.java:964)
09-25 10:39:26.509    8101-8114/? W/System.err﹕ at com.j256.ormlite.dao.BaseDaoImpl.iterator(BaseDaoImpl.java:533)
09-25 10:39:26.509    8101-8114/? W/System.err﹕ at com.j256.ormlite.dao.LazyForeignCollection.seperateIteratorThrow(LazyForeignCollection.java:313)
09-25 10:39:26.509    8101-8114/? W/System.err﹕ at com.j256.ormlite.dao.LazyForeignCollection.iteratorThrow(LazyForeignCollection.java:71)
09-25 10:39:26.509    8101-8114/? W/System.err﹕ at com.j256.ormlite.dao.LazyForeignCollection.closeableIterator(LazyForeignCollection.java:60)
09-25 10:39:26.509    8101-8114/? W/System.err﹕ at com.j256.ormlite.dao.LazyForeignCollection.iterator(LazyForeignCollection.java:47)
09-25 10:39:26.509    8101-8114/? W/System.err﹕ at com.j256.ormlite.dao.LazyForeignCollection.size(LazyForeignCollection.java:106)
09-25 10:39:26.509    8101-8114/? W/System.err﹕ at co.wecommunicate.test.ORMTest.testUserFriendship(ORMTest.java:179)enter code here
sqlite> select * from user;
|user|0|101|0.0|0.0|0|0|0|0
|user2|0|102|0.0|0.0|0|0|0|0
sqlite> select * from userfriendship;
102|101|1