Problema risolto! - Ho aggiunto la mia soluzione in fondo.Errore di compilazione many-to-many con greendao per android
Ho una domanda abbastanza semplice ma non riesco a trovare la risposta nella documentazione.
Sto provando a modellare una relazione molti-a-molti usando greendao per Android, tuttavia ottengo un errore di compilazione nel progetto principale dopo aver eseguito il progetto generatore.
Il mio codice che specifica i rapporti e le entità:
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");
Gli errori: In Customer.java: customerId non può essere risolto in una variabile In Product.java: productId non può essere risolto a una variabile
Per favore aiuto, grazie.
Edit:
Ecco un estratto con il codice problema da Customer.java (auto-generata):
/** a-uno, deliberato in data primo accesso. */
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;
}
Problema: questo codice generato tenta di fare riferimento customerId, ma customerId non esiste come uno dei membri della classe:
public class Customer {
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;
Soluzione:
Quindi quello che stavo cercando di fare da sempre era modellare una relazione molti-a-molti. Quello che stavo facendo: cliente (M: 1) CustomerProduct (1: M) del prodotto
Tuttavia ciò che avrei dovuto fare: cliente (1: M) CustomerProduct (M: 1) Prodotto
Si prega di mostrare il codice che causa gli errori. –
Ho aggiunto il codice che causa l'errore di compilazione – user2031401
Questo codice è la vostra soluzione? Hai avuto qualche progresso non pubblicato qui? – MatheusJardimB