2013-03-12 12 views
6

問題が解決しました! - 私は自分のソリューションを一番下に追加しました。android用greendaoを使用した多対多コンパイルエラー

私はかなり単純な質問だと思っていますが、その答えをドキュメントで見つけることはできません。

私は、アンドロイド用のgreendaoを使用して多対多の関係をモデル化しようとしていますが、ジェネレータプロジェクトを実行した後、メインプロジェクトでコンパイルエラーが発生します。

関係やエンティティを指定するマイコード:

Entity customer = schema.addEntity("Customer"); 
    customer.addIdProperty(); 
    customer.addStringProperty("firstName").notNull(); 
    customer.addStringProperty("lastName").notNull(); 
    customer.addDateProperty("birthDate"); 
    customer.addStringProperty("phoneNumber"); 
    customer.addStringProperty("address"); 
    customer.addStringProperty("email"); 


    // Product 
    Entity product= schema.addEntity("Product"); 
    product.addIdProperty(); 
    product.addIntProperty("colour").notNull(); 
    product.addIntProperty("weight").notNull(); 

    // CustomerProduct 
    Entity customerProduct = schema.addEntity("CustomerProduct"); 
    customerProduct.addIdProperty(); 

    Property customerId = customerProduct.addLongProperty("customerId").notNull().getProperty(); 
    customer.addToOne(customerProduct , customerId); 
    ToMany customerProductToCustomers = customerProduct.addToMany(customer, customerId); 
    customerProductToCustomers.setName("customers");   

    Property productId = customerProduct.addLongProperty("productId").notNull().getProperty(); 
    product.addToOne(customerProduct , productId); 
    ToMany customerProductToProducts = customerProduct.addToMany(product, productId); 
    customerProductToProducts.setName("products"); 

    customerProduct.addStringProperty("something"); 

エラーを:Customer.javaで :はcustomerIdがProduct.javaで変数 に解決することはできません。PRODUCTIDは、変数に解決することはできません

ご協力ありがとうございます。

編集:最初のアクセスで解決

/**対1の関係、:ここ

がCustomer.java(自動生成)から、問題のコードを有する抽出物です。 */

public CustomerProduct getCustomerProduct() { 
    if (customerProduct__resolvedKey == null || !customerProduct__resolvedKey.equals(customerId)) { 
     if (daoSession == null) { 
      throw new DaoException("Entity is detached from DAO context"); 
     } 
     CustomerProductDao targetDao = daoSession.getCustomerProductDao(); 
     customerProduct = targetDao.load(customerId); 
     customerProduct__resolvedKey = customerId; 
    } 
    return customerProduct ; 
} 

public void setCustomerProduct(CustomerProduct customerProduct) { 
    if (customerProduct == null) { 
     throw new DaoException("To-one property 'customerId' has not-null constraint; cannot set to-one to null"); 
    } 
    this.customerProduct = customerProduct; 
    customerId= customerProduct.getId(); 
    customerProduct__resolvedKey = customerId; 
} 

問題:

パブリッククラスカスタマー{

private Long id; 
/** Not-null value. */ 
private String firstName; 
/** Not-null value. */ 
private String lastName; 
private java.util.Date birthDate; 
private String phoneNumber; 
private String address; 
private String email; 

/** Used to resolve relations */ 
private transient DaoSession daoSession; 

/** Used for active entity operations. */ 
private transient CustomerDao myDao; 

private CustomerProduct customerProduct; 
private Long customerProduct__resolvedKey; 

:これは、コードが得意先参照しようとしているが、はcustomerIdがクラスのメンバーの一人として存在していない生成ソリューション

私が全力でやってみたかったことは、多対多関係のモデルでした。 私は何をやっていた: お客様(M:1)CustomerProduct(1:M)私が行っているべきしかし製品

: お客様(1:M)CustomerProduct(M:1)製品

+0

エラーの原因となるコードを表示してください。 –

+0

コンパイルエラーの原因となるコードを追加しました – user2031401

+0

このコードはソリューションですか?ここに投稿されていない進歩はありましたか? – MatheusJardimB

答えて

0

変更をcustomerId= customerProduct.getId();~int customerId= customerProduct.getId();。または、より良いことに、customerProduct__resolvedKeyが正しく宣言されていると仮定して、customerProduct__resolvedKey = customerProduct.getId();を実行してください。

+0

これはsetCustomerProduct関数で動作するようですが、getCustomerProduct()関数でも同じアプローチが有効かどうかはわかりません。おそらく私が多対多エンティティの関係を定義しているところで、もっと大きな問題があるかもしれないと思いますか? ..このコードは自動生成されているので..? – user2031401

+0

@user greendaoは一度も使用していないので、Javaコードの生成方法は不明です。私は単純にコンパイラのエラーに基づいて答えていました。私は、問題を再現し、生成したコードではなく、あなたが書いたコードを投稿する小さなサンプルを作成することをお勧めします。 –

+0

入力いただきありがとうございます。最初のコードサンプルは、私が書いたコードです。コンパイルして正常に動作します。このコード(エキスパート)を実行すると、エンティティとその対応関係が自動的に生成されます。しかし、自動生成されたコードにはコンパイルエラーがあります。 – user2031401

関連する問題