2017-11-12 15 views
0

서버의 응답을 구문 분석하여 데이터베이스 (greendao)에 저장하십시오. 모든 개체가 올바르게 저장되었습니다. 예를 들어 나는 실체가 :내부 엔티티를 얻기 위해 Greendao에서 관계를 올바르게 작성하십시오.

@Entity(active = true, nameInDb = "PURCHASE") 
public class Purchase { 
    private long purchaseShopId; 
    private String createdAt; 
    @ToMany(referencedJoinProperty = "shopId") 
    private List<ShopStats> shopStats; 
// ... 

@Entity(active = true, nameInDb = "SHOP_STATS") 
public class ShopStats { 
    private long shopId; 
    @ToOne 
    private Shop shop; 
    @ToOne 
    private Spend spend; 
// ... 

@Entity(active = true, nameInDb = "SHOP_STATS_SPEND") 
public class Spend { 
    private long shopId; 
    @SerializedName("sum") 
    private float paymentSum; 
    @SerializedName("discount_sum") 
    private float discountSum; 
// ... 

을 그리고 난 모든 구매를 가져 오기 할 때, ShopStats, 가게를 보내 - 같은 :

List<Purchase> purchasesList = getDaoSession().getPurchaseDao().loadAll(); 

나는 모든 내부 객체를 제공하기 위해 excpected

Spend spend = purchasesList.get(i).getShopSatats().getSpend(); // in cycle 

하지만 여기는 null이됩니다. 이처럼 내부 객체를 가져 오려면 어떻게해야합니까?

내부 객체를 바인딩 할 수 있지만 작동하지 않을 때까지 내 주석을 수정해야 할 것으로 생각됩니다. 나는이 @ToOne(joinProperty = "shopId") 같이 수정 주석을 시도했지만 예외를 생산 :

If @ToOne with foreign property used, @Column and @Unique are ignored

나에게 내가 이것을 달성 할 수있는 방법 조언을 좀주세요? 또는 DaoSession과 별도로 각 목록 개체 만 가져올 수 있습니까? 내부 그냥 요약하자면

답변

0

, 각 Purchase가 여러 ShopStats 내가 ShopStats의 목록이 있다는 것을 당신의 Purchase 데이터 모델에서 볼 수 있기 때문입니다 그것은 하나를 일대 보내고 관계 Purchase

@ToMany(referencedJoinProperty = "shopId") private List<ShopStats> shopStats;

코드 purchasesList.get(i)Purchase 개체를 반환한다고 생각합니다. 각 ShopstatsSpend

을가 내부

다음 purchasesList.get(i).getShopSatats() 그래서 당신은 지정해야합니다 그리고 당신에게 List<ShopStats> 아닌 하나의 Shopstats

을 반환하는 ShopstatsSpend 당신이 가져 싶다.

힌트 :

  • 은 어쩌면 당신은 어쩌면 당신은 List<Shopstat> shopStatsPurchaseShopstat하고 List<Shopstats> shopStats에 Entity 클래스 Shopstats의 이름을 변경해야

Spend spend = purchasesList.get(i).getShopSatats().get(j).getSpend(); // in cycle

  • 으로 코드를 수정할 수 있습니다. 제 요점은 Shopstats와 Shopstats 목록이 이해할 수 있고 쉽게 이해할 수있는 이름을 갖고 있는지 확인하는 것입니다.

나는 초보자, 내가 당신의 의견을 알려 주시면 도와 드리겠습니다 더 이상 도움 *

이 필요하고 경우