0

如何在 ORMLite 中正确使用 Foreign?

我有一个类货币对,它由类货币的 2 个实例组成。我了解,数据库不会保存实例,而是保存它们的 ID。

这里是这些类的相关部分。

DatabaseTable(tableName = "CurrencyPairs")
public class CurrencyPair {
    @DatabaseField(id = true)
    private int id;
    @DatabaseField(columnName = "baseCurrency_ID", **foreign** = true )
    private CCC_Currency baseCurrency;
    @DatabaseField(columnName = "quotedCurrency_ID", **foreign** = true )
    private CCC_Currency quotedCurrency;    
    @DatabaseField(columnName = "subscribed")
    private boolean subscribed;

@DatabaseTable(tableName = "CCC_Currencies")
public class CCC_Currency {

    @DatabaseField(columnName = "currencyName")
    private String currencyName;
    @DatabaseField(columnName = "shortName")
    private String shortName;
    @DatabaseField(columnName = "symbol")
    private String symbol;
    @DatabaseField(columnName = "isFiat")
    private boolean isFiat;

    @DatabaseField(generatedId = true)
    private int id;

当我现在加载 Currencypairs 时

    try {
        CurrencyPair_Dao = DaoManager.createDao(dbHandler.getInstance(),
                CurrencyPair.class);
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    // Get Objects and add them to the library
    List<CurrencyPair> all = null;
    try {
        all = CurrencyPair_Dao.queryForAll();
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

它在所有列表中创建currencyPairs,但它们的字段(例如baseCurrency)为空。不知何故,ID 没有链接到对象本身。

我错过了什么?

谢谢您的帮助

4

1 回答 1

0

首先,你必须持久化一个 CCC_Concurrency 实例,所以 OrmLite 会设置一个生成的 id。然后将此实例设置在 ConcurrencyPair 的对象上,并将其持久化。

于 2014-05-13T16:13:24.820 回答