私は Gson と一緒に Android アプリケーション内で ORMLite を使用しており、現在次の問題に苦しんでいます。
私のアプリ内には、ORMLite/Gson を利用する複数のクラスがあります。簡単にするために、2 つだけを使用して問題を説明します。
クラスがあるとしProduct
ます:
@SerializedName("product_id")
@DatabaseTable(tableName = "products")
public class Product {
public Product() {
}
@DatabaseField(id = true)
private int id;
// Generic stuff
@DatabaseField
@SerializedName("product_desc")
private String desc;
@DatabaseField
@SerializedName("in_stock")
private boolean inStock;
@DatabaseField(unique = true)
@SerializedName("product_name")
private String name;
// Issue occurs here
@DatabaseField(foreign = true, foreignAutoRefresh = true)
private Venue venue;
}
クラス "Venue` があります:
@DatabaseTable(tableName = "venues")
public class Venue {
public Venue() {
}
@SerializedName("venueid")
@DatabaseField(id = true)
private int id;
// Other Generic Junk
@DatabaseField
private String desc;
@DatabaseField
private String email;
@DatabaseField
private String fax;
@DatabaseField
@SerializedName("venue_name")
private String name;
@DatabaseField
private String phoneNumber;
}
Gson を使用して、事前に作成された API から Json を逆シリアル化し、ORMLite を使用してデータベースにこのデータを入力します。API がオブジェクトではなく、各製品が関連付けられている会場の会場 ID (例:venueid = 1) を返すため、問題が発生しVenue
ます。
ただし、データベースにはこれらの会場がすでに入力されているためvenueid = 1
、現在のデータベース内の実際の会場を参照しています。
問題は、ORMLite がこれを理解し、内部のオブジェクトを id = 1のVenue
オブジェクトに更新することです!Product
誰でも解決策を考えることができますか?
編集:
私の問題をよりよく理解するために、サンプル Json を次に示します。
[
{
"productid": 1,
"venueid": 4,
"product_name": "Jack Daniels",
"in_stock": true,
"orders_accepted": true,
}
...
]
ご覧のとおり、オブジェクトではなく、venueid の int を取得しVenue
ます。複数のクエリの大きなオーバーヘッドなしで、対応する会場に変換する簡単な方法はありますか