2012-03-14 5 views
0

データ・クラスのインスタンスをORMLiteを介してデータベースに書き込み、子メンバーの1つ(外部フィールド)がNULLの場合、NULLでない子メンバーを戻します。ORMLite外部フィールド作成時にnull、問合せでNULLでない

データクラスを次のように

public class Site { 
    // snip 
    @DatabaseField(foreign = true, canBeNull = true) 
    private InstallationType installationType; 
} 

public class InstallationType { 
    @DatabaseField(generatedId = true) 
    private int id; 
    @DatabaseField 
    private String name; 
} 

私は

getSiteDao().queryForId(id); 

を経由して再びサイトクラスの私のインスタンスを読んだときinstallationtypeはメンバーが非nullであるが、存在しないIDを持ちます。アプリケーションの残りの部分がこのオブジェクトで動作する唯一の方法は、InstallationTypeDAOを使って手動で検索し、サイトに戻ったものを設定する場合です。クエリは、the documentationのようにnullを返すことがあります。

ORMLiteを取得してこのメ​​ンバーをnullに設定する方法はありますか?

答えて

1

は、ORMLiteのバグ4.135(2011/03/7)で修正されたのバグでした。ここにはchange log fileがあります。どのバージョンを使用していますか?あなたは更新しようとしましたか?ここにはbug report pageがあります。

現在、次のテストに合格していますので、私たちはそのバグをよくカバーしていると思います。 Foreign

@Test 
public void testForeignNull() throws Exception { 
    Dao<Foreign, Integer> dao = createDao(Foreign.class, true); 
    Foreign foreign = new Foreign(); 
    foreign.foo = null; 
    assertEquals(1, dao.create(foreign)); 
    Foreign foreign2 = dao.queryForId(foreign.id); 
    assertNotNull(foreign2); 
    assertNull(foreign2.foo); 
} 

次のフィールドを持つ:

@DatabaseField(generatedId = true) 
public int id; 
@DatabaseField(foreign = true) 
public Foo foo; 

あなたがバージョンアップした日付にしている場合、あなたはそれが失敗してもらうためにテストを変更できるなら、私に知らせてください。

+0

私は4.30を使用しています。 (HelloAndroidNoBaseの例でパッケージ化されたバージョン)4.35を試してみましょう。 – Diederik

+0

4.35にアップグレードすると問題が解決しました。ありがとうグレイ。 – Diederik

関連する問題