Я получаю следующую ошибку:
org.linphone.contacts.managementWS.ContactWithNumbers has some fields [id, mName, mSurname,
mFullName, mCompany, mEmail, mEmailType, mAddress, mPostcode, mCity, mCountry, mAddressType,
mUrl, mNote, mIsBlocked] which are not returned by the query. If they are not supposed to be
read from the result, you can mark them with @Ignore annotation. You can suppress this warning
by annotating the method with @SuppressWarnings(RoomWarnings.CURSOR_MISMATCH). Columns returned
by the query: mPhoneNumber, mPhoneNumberType. Fields in
org.linphone.contacts.managementWS.ContactWithNumbers: id, mName, mSurname, mFullName, mCompany,
mPhoneNumber, mPhoneNumberType, mEmail, mEmailType, mAddress, mPostcode, mCity, mCountry,
mAddressType, mUrl, mNote, mIsBlocked.
Подавление предупреждения не устраняет ошибку, поэтому я считаю, что я должен использовать @Ignore
. Однако где я должен разместить аннотацию @Ignore
? Мне все еще нужно использовать столбцы в родительской таблице, но только не в этом конкретном c запросе (который может использовать только 3 из этих столбцов).
РЕДАКТИРОВАТЬ:
ContactsWithNumbers. java:
public class ContactWithNumbers {
@Embedded public Contact contact;
@Relation(parentColumn = "id", entityColumn = "mContactId", entity = PhoneNumbers.class)
public List<PhoneNumbers> numbers;
}
PhoneNumbers. java:
@Entity(tableName = "phone_numbers_table")
public class PhoneNumbers {
@PrimaryKey(autoGenerate = true)
public int id;
@ForeignKey(
entity = Contact.class,
parentColumns = "id",
childColumns = "mContactId",
onDelete = CASCADE)
/* String resource ID for the contact */
@ColumnInfo
@SerializedName("contact_id")
public int mContactId;
/** String resource ID for the phone number */
@SerializedName("phone_number")
public String mPhoneNumber;
/** String resource ID for the phone number type */
@SerializedName("phone_number_type")
public String mPhoneNumberType;
public PhoneNumbers(String phoneNumber, String phoneNumberType) {
this.mPhoneNumber = phoneNumber;
this.mPhoneNumberType = phoneNumberType;
}
}
В моем ContactDao у меня есть следующее:
@Dao
public interface ContactDao {
...
@Transaction
@Query("SELECT * FROM phone_numbers_table")
List<ContactWithNumbers> getContactsWithPhoneNumbers();
...
}