Problem gelöst! - Ich habe meine Lösung ganz unten hinzugefügt.Viele-zu-Viele Kompilierfehler mit greendao für Android
Ich habe was eine Frage ist eine ziemlich einfache Frage, aber ich kann nicht scheinen, die Antwort in der Dokumentation zu finden.
Ich versuche, eine Viele-zu-Viele-Beziehung mit greendao für Android zu modellieren, aber ich bekomme einen Kompilierfehler im Hauptprojekt, nachdem ich das Generatorprojekt ausgeführt habe.
Mein Code, die Beziehungen und Organisationen gibt:
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");
Die Fehler: In Customer.java: customerId eine Variablen In Product.java nicht gelöst werden kann: productId kann nicht zu einer Variablen aufgelöst werden
Bitte helfen, Danke.
Edit:
Hier ein Auszug mit dem Problem Code aus Customer.java (automatisch generiert):
/** zu-Eins-Beziehung auf den ersten Zugang aufgelöst. */
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;
}
Problem: Diese generierten Code versucht customerId, aber customerId existiert nicht als eines der Mitglieder der Klasse zu verweisen:
public class Kunde {
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;
Lösung:
Also was ich versuchte, die ganze Zeit zu tun, war Modell eine Viele-zu-Viele-Beziehung. Was ich tat: Kunde (M: 1) CustomerProduct (1: M) Produkt
jedoch, was ich getan haben sollte: Kunden (1: M) CustomerProduct (M: 1) Produkt
Bitte zeigen Sie den Code, der die Fehler verursacht. –
Ich habe den Code hinzugefügt, der den Kompilierfehler verursacht – user2031401
Ist dieser Code Ihre Lösung? Hattest du irgendwelche Fortschritte, die hier nicht veröffentlicht wurden? – MatheusJardimB