1

結合を機能させるのに問題があります。2 つのテーブル定義は次のとおりです。

public class Student { 
    @ForeignCollectionField(eager = true, columnName = STUDENT_INSTANCE_COLLECTION_NAME)
    private ForeignCollection<StudentInstance> studentInstances;

    ...
}

public class StudentInstance {
    public static final String STUDENT_ID_COLUMN = "student_id";
    public static final String REGISTER_ID_COLUMN = "register_id";

    @DatabaseField(generatedId = true)
    private int id;

    @DatabaseField(canBeNull = false, foreign = true)
    private Student student;

    @DatabaseField(canBeNull = false, foreign = true)
    private Register register;

   ...

}

活動コード:

public List<Student> getStudents( int registerId ) {
    QueryBuilder<StudentInstance, Integer> studentInstanceQb =  studentInstanceDao.getDAO().queryBuilder();
    studentInstanceQb.where().eq(StudentInstance.REGISTER_ID_COLUMN, registerId);
    QueryBuilder<Student, Integer> studentQb =  getDAO().queryBuilder();    
    studentQb.join(studentInstanceQb).query();
}

コードを実行すると、例外が発生します。

getStudents のエラー: java.sql.SQLException: クラス com.beardedhen.roster.db.entity.StudentInstance に外部クラス com.beardedhen.roster.db.entity.Student フィールドが見つかりませんでした、またはその逆

おそらくばかげたエラーですが、私はそれで完全なレンガの壁にぶつかりました.

助けてくれてありがとう、

アンディ

4

1 に答える 1

0

QueryBuilder を見てください。例外の発生元である matchJoinedFields()。現在の (4.42) 実装がどのようにテーブルをチェックし、結合のために接続された列を探すかがわかります。

于 2013-01-14T16:30:13.110 に答える