我在连接工作时遇到问题,两个表定义如下:
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:找不到外来的 class com.beardedhen.roster.db.entity.Student in class in class com.beardedhen.roster.db.entity.StudentInstance,反之亦然
这可能是一个愚蠢的错误,但我用它打了一堵完整的砖墙。
感谢您的帮助,
安迪
答案 0 :(得分:0)
看一下QueryBuilder。 matchJoinedFields(),异常来自。您将看到当前(4.42)实现如何检查表并查找连接的连接列。