1

私は2つのクラスを持っています

リスト

@DatabaseTable(tableName = "loginsList")
public class LoginsList {

    @DatabaseField(columnName = "loginListID", generatedId = true)
    private int loginListID;
    @DatabaseField(columnName = "listName")
    private String listName;
    @DatabaseField(columnName = "listDescription")
    private String listDescription;
    @DatabaseField(columnName = "current")
    private boolean current;
    @DatabaseField(columnName = "sent")
    private boolean sent;

ログイン

@DatabaseTable(tableName = "login")
public class Login {
    @DatabaseField(columnName = "loginID", generatedId = true)
    private int loginID;
    @DatabaseField(columnName = "user", foreign=true)
    private User user;
    @DatabaseField(columnName = "loggedIn")
    private boolean loggedIn;
    @DatabaseField(columnName = "loginTime")
    private long loginTime;
    @DatabaseField(columnName = "logoutTime")
    private long logoutTime;
    @DatabaseField(columnName = "loginsList", foreign = true)
    private LoginsList loginsList;

データベースにはORMLiteを使用しています。リストのすべてのログインを取得する方法を知りたいですか? 私はこのようにしてみました

tempLoginList = loginDao.queryForEq("loginsList", list);

list は LoginsList 型で、すべてのログインを取得したいリストですが、機能しません。クエリビルダーでそれを行う方法は?

4

1 に答える 1

2
tempLoginList = loginDao.queryForEq("loginsList", list);

それはうまくいくはずです。邪魔になる可能性があることを確認するためのいくつかの事項を次に示します。

  • ORMLiteは、 のフィールドintである を格納します。リストを に関連付ける場合、リストはデータベース内にすでに作成されている必要があるため、その ID はすでに生成されています。LoginloginListIDLoginsListLogin

  • クエリ ログを確認すると (次の log4j プロパティなどでログloginを有効にすると、関連するクエリが表示されるはずです。クエリ対象の id フィールドを確認できるはずです。それが正しいことを確認する必要があります。

    log4j.logger.com.j256.ormlite=DEBUG
    # to enable logging of arguments to all of the SQL calls
    # uncomment the following lines
    log4j.logger.com.j256.ormlite.stmt.mapped.BaseMappedStatement=TRACE
    #log4j.logger.com.j256.ormlite.stmt.mapped.MappedCreate=TRACE
    #log4j.logger.com.j256.ormlite.stmt.StatementExecutor=TRACE
    

私は多くの単体テストを行っていますが、特に周りdao.queryForEq(...)や外国の分野ではありません。それらをコードベースに追加しただけで、正常に動作します。これが役立つかもしれない私のログ出力です:

[DEBUG] BaseMappedStatement insert data with statement 'INSERT INTO `foo` (`val` ,`equal` ,`null` ) VALUES (?,?,?)' and 3 args, changed 1 rows
[TRACE] BaseMappedStatement insert arguments: [1231231, 0, null]
[DEBUG] BaseMappedStatement assigned id '1' from keyholder to 'id' in Foo object
[DEBUG] BaseMappedStatement insert data with statement 'INSERT INTO `foreign` (`foo_id` ) VALUES (?)' and 1 args, changed 1 rows
[TRACE] BaseMappedStatement insert arguments: [1]
[DEBUG] BaseMappedStatement assigned id '1' from keyholder to 'id' in Foreign object
[DEBUG] StatementBuilder built statement SELECT * FROM `foreign` WHERE `foo_id` = 1 
[DEBUG] BaseMappedStatement prepared statement 'SELECT * FROM `foreign` WHERE `foo_id` = 1 ' with 0 args
[DEBUG] SelectIterator starting iterator @1781793025 for 'SELECT * FROM `foreign` WHERE `foo_id` = 1 '
[DEBUG] SelectIterator closed iterator @1781793025 after 1 rows
[DEBUG] StatementExecutor query of 'SELECT * FROM `foreign` WHERE `foo_id` = 1 ' returned 1 results
于 2012-10-24T12:54:52.440 に答える