getId() method of Entity generates label collisions in DAO_Impl
I have noticed no understandable error of generated implementation for my DAO, when using Android Room. First of all I need to mention that I'm making my app as a modification of Android Room with a View.
I have a class for Task:
app/java/com.example.blah/Task.java:
package ...
import ...
@Entity
public class Task {
@PrimaryKey(autoGenerate = true)
@NonNull
@ColumnInfo(name = "id")
protected int _id;
@NonNull
@ColumnInfo(name = "description")
protected String _description;
public Task(@NonNull String description) {
_description = description;
}
public int getId() {
return _id;
}
public String getDescription() {return _description;}
}
When I try to build this code I'm getting compilation error from one of the generated classes:
app/generatedJava/com.example.blah/TaskDAO_Impl.java
package ...
import ...
@SuppressWarnings("unchecked")
public class TaskDAO_Impl implements TaskDAO {
private final RoomDatabase __db;
private final EntityInsertionAdapter __insertionAdapterOfTask;
private final SharedSQLiteStatement __preparedStmtOfDeleteAll;
public TaskDAO_Impl(RoomDatabase __db) {
this.__db = __db;
this.__insertionAdapterOfTask = new EntityInsertionAdapter<Task>(__db) {
@Override
public String createQuery() {
return "INSERT OR ABORT INTO `Task`(`id`,`description`) VALUES (nullif(?, 0),?)";
}
@Override
public void bind(SupportSQLiteStatement stmt, Task value) {
stmt.bindLong(1, value.getId());
if (value.getDescription() == null) {
stmt.bindNull(2);
} else {
stmt.bindString(2, value.getDescription());
}
}
};
this.__preparedStmtOfDeleteAll = new SharedSQLiteStatement(__db) {
@Override
public String createQuery() {
final String _query = "DELETE FROM Task";
return _query;
}
};
}
@Override
public void insert(Task task) {
__db.beginTransaction();
try {
__insertionAdapterOfTask.insert(task);
__db.setTransactionSuccessful();
} finally {
__db.endTransaction();
}
}
@Override
public void deleteAll() {
final SupportSQLiteStatement _stmt = __preparedStmtOfDeleteAll.acquire();
__db.beginTransaction();
try {
_stmt.executeUpdateDelete();
__db.setTransactionSuccessful();
} finally {
__db.endTransaction();
__preparedStmtOfDeleteAll.release(_stmt);
}
}
@Override
public LiveData<List<Task>> getAllTasks() {
final String _sql = "SELECT * FROM Task ORDER BY description ASC";
final RoomSQLiteQuery _statement = RoomSQLiteQuery.acquire(_sql, 0);
return new ComputableLiveData<List<Task>>() {
private Observer _observer;
@Override
protected List<Task> compute() {
if (_observer == null) {
_observer = new Observer("Task") {
@Override
public void onInvalidated(@NonNull Set<String> tables) {
invalidate();
}
};
__db.getInvalidationTracker().addWeakObserver(_observer);
}
final Cursor _cursor = __db.query(_statement);
try {
final int _cursorIndexOfId = _cursor.getColumnIndexOrThrow("id");
final int _cursorIndexOfDescription = _cursor.getColumnIndexOrThrow("description");
final List<Task> _result = new ArrayList<Task>(_cursor.getCount());
while(_cursor.moveToNext()) {
final Task _item;
final String _tmp_description;
_tmp_description = _cursor.getString(_cursorIndexOfDescription);
_item.getId = _cursor.getInt(_cursorIndexOfId);
final String _tmp_1;
_tmp_1 = _cursor.getString(_cursorIndexOfActivationDate);
_item._activationDate = DateStringConverter.intoDate(_tmp_1);
_item.points = _cursor.getInt(_cursorIndexOfPoints);
_result.add(_item);
}
return _result;
} finally {
_cursor.close();
}
}
@Override
protected void finalize() {
_statement.release();
}
}.getLiveData();
}
}
And this line:
_item.getId = _cursor.getInt(_cursorIndexOfId);
Is causing the error:
error: cannot find symbol variable getId
because there is no field getId in class Task. Please note that class mentioned above is not written by me. It's automatically generated by Android Studio.
I wonder why this happen? If I delete function getId() from Task class, everything becomes all right. For the generated code mentioned above, once I delete getId() function, the suspicious line turns into:
_item._id = _cursor.getInt(_cursorIndexOfId);
And everything compiles all right. Can anyone explain it?
android dao
add a comment |
I have noticed no understandable error of generated implementation for my DAO, when using Android Room. First of all I need to mention that I'm making my app as a modification of Android Room with a View.
I have a class for Task:
app/java/com.example.blah/Task.java:
package ...
import ...
@Entity
public class Task {
@PrimaryKey(autoGenerate = true)
@NonNull
@ColumnInfo(name = "id")
protected int _id;
@NonNull
@ColumnInfo(name = "description")
protected String _description;
public Task(@NonNull String description) {
_description = description;
}
public int getId() {
return _id;
}
public String getDescription() {return _description;}
}
When I try to build this code I'm getting compilation error from one of the generated classes:
app/generatedJava/com.example.blah/TaskDAO_Impl.java
package ...
import ...
@SuppressWarnings("unchecked")
public class TaskDAO_Impl implements TaskDAO {
private final RoomDatabase __db;
private final EntityInsertionAdapter __insertionAdapterOfTask;
private final SharedSQLiteStatement __preparedStmtOfDeleteAll;
public TaskDAO_Impl(RoomDatabase __db) {
this.__db = __db;
this.__insertionAdapterOfTask = new EntityInsertionAdapter<Task>(__db) {
@Override
public String createQuery() {
return "INSERT OR ABORT INTO `Task`(`id`,`description`) VALUES (nullif(?, 0),?)";
}
@Override
public void bind(SupportSQLiteStatement stmt, Task value) {
stmt.bindLong(1, value.getId());
if (value.getDescription() == null) {
stmt.bindNull(2);
} else {
stmt.bindString(2, value.getDescription());
}
}
};
this.__preparedStmtOfDeleteAll = new SharedSQLiteStatement(__db) {
@Override
public String createQuery() {
final String _query = "DELETE FROM Task";
return _query;
}
};
}
@Override
public void insert(Task task) {
__db.beginTransaction();
try {
__insertionAdapterOfTask.insert(task);
__db.setTransactionSuccessful();
} finally {
__db.endTransaction();
}
}
@Override
public void deleteAll() {
final SupportSQLiteStatement _stmt = __preparedStmtOfDeleteAll.acquire();
__db.beginTransaction();
try {
_stmt.executeUpdateDelete();
__db.setTransactionSuccessful();
} finally {
__db.endTransaction();
__preparedStmtOfDeleteAll.release(_stmt);
}
}
@Override
public LiveData<List<Task>> getAllTasks() {
final String _sql = "SELECT * FROM Task ORDER BY description ASC";
final RoomSQLiteQuery _statement = RoomSQLiteQuery.acquire(_sql, 0);
return new ComputableLiveData<List<Task>>() {
private Observer _observer;
@Override
protected List<Task> compute() {
if (_observer == null) {
_observer = new Observer("Task") {
@Override
public void onInvalidated(@NonNull Set<String> tables) {
invalidate();
}
};
__db.getInvalidationTracker().addWeakObserver(_observer);
}
final Cursor _cursor = __db.query(_statement);
try {
final int _cursorIndexOfId = _cursor.getColumnIndexOrThrow("id");
final int _cursorIndexOfDescription = _cursor.getColumnIndexOrThrow("description");
final List<Task> _result = new ArrayList<Task>(_cursor.getCount());
while(_cursor.moveToNext()) {
final Task _item;
final String _tmp_description;
_tmp_description = _cursor.getString(_cursorIndexOfDescription);
_item.getId = _cursor.getInt(_cursorIndexOfId);
final String _tmp_1;
_tmp_1 = _cursor.getString(_cursorIndexOfActivationDate);
_item._activationDate = DateStringConverter.intoDate(_tmp_1);
_item.points = _cursor.getInt(_cursorIndexOfPoints);
_result.add(_item);
}
return _result;
} finally {
_cursor.close();
}
}
@Override
protected void finalize() {
_statement.release();
}
}.getLiveData();
}
}
And this line:
_item.getId = _cursor.getInt(_cursorIndexOfId);
Is causing the error:
error: cannot find symbol variable getId
because there is no field getId in class Task. Please note that class mentioned above is not written by me. It's automatically generated by Android Studio.
I wonder why this happen? If I delete function getId() from Task class, everything becomes all right. For the generated code mentioned above, once I delete getId() function, the suspicious line turns into:
_item._id = _cursor.getInt(_cursorIndexOfId);
And everything compiles all right. Can anyone explain it?
android dao
add a comment |
I have noticed no understandable error of generated implementation for my DAO, when using Android Room. First of all I need to mention that I'm making my app as a modification of Android Room with a View.
I have a class for Task:
app/java/com.example.blah/Task.java:
package ...
import ...
@Entity
public class Task {
@PrimaryKey(autoGenerate = true)
@NonNull
@ColumnInfo(name = "id")
protected int _id;
@NonNull
@ColumnInfo(name = "description")
protected String _description;
public Task(@NonNull String description) {
_description = description;
}
public int getId() {
return _id;
}
public String getDescription() {return _description;}
}
When I try to build this code I'm getting compilation error from one of the generated classes:
app/generatedJava/com.example.blah/TaskDAO_Impl.java
package ...
import ...
@SuppressWarnings("unchecked")
public class TaskDAO_Impl implements TaskDAO {
private final RoomDatabase __db;
private final EntityInsertionAdapter __insertionAdapterOfTask;
private final SharedSQLiteStatement __preparedStmtOfDeleteAll;
public TaskDAO_Impl(RoomDatabase __db) {
this.__db = __db;
this.__insertionAdapterOfTask = new EntityInsertionAdapter<Task>(__db) {
@Override
public String createQuery() {
return "INSERT OR ABORT INTO `Task`(`id`,`description`) VALUES (nullif(?, 0),?)";
}
@Override
public void bind(SupportSQLiteStatement stmt, Task value) {
stmt.bindLong(1, value.getId());
if (value.getDescription() == null) {
stmt.bindNull(2);
} else {
stmt.bindString(2, value.getDescription());
}
}
};
this.__preparedStmtOfDeleteAll = new SharedSQLiteStatement(__db) {
@Override
public String createQuery() {
final String _query = "DELETE FROM Task";
return _query;
}
};
}
@Override
public void insert(Task task) {
__db.beginTransaction();
try {
__insertionAdapterOfTask.insert(task);
__db.setTransactionSuccessful();
} finally {
__db.endTransaction();
}
}
@Override
public void deleteAll() {
final SupportSQLiteStatement _stmt = __preparedStmtOfDeleteAll.acquire();
__db.beginTransaction();
try {
_stmt.executeUpdateDelete();
__db.setTransactionSuccessful();
} finally {
__db.endTransaction();
__preparedStmtOfDeleteAll.release(_stmt);
}
}
@Override
public LiveData<List<Task>> getAllTasks() {
final String _sql = "SELECT * FROM Task ORDER BY description ASC";
final RoomSQLiteQuery _statement = RoomSQLiteQuery.acquire(_sql, 0);
return new ComputableLiveData<List<Task>>() {
private Observer _observer;
@Override
protected List<Task> compute() {
if (_observer == null) {
_observer = new Observer("Task") {
@Override
public void onInvalidated(@NonNull Set<String> tables) {
invalidate();
}
};
__db.getInvalidationTracker().addWeakObserver(_observer);
}
final Cursor _cursor = __db.query(_statement);
try {
final int _cursorIndexOfId = _cursor.getColumnIndexOrThrow("id");
final int _cursorIndexOfDescription = _cursor.getColumnIndexOrThrow("description");
final List<Task> _result = new ArrayList<Task>(_cursor.getCount());
while(_cursor.moveToNext()) {
final Task _item;
final String _tmp_description;
_tmp_description = _cursor.getString(_cursorIndexOfDescription);
_item.getId = _cursor.getInt(_cursorIndexOfId);
final String _tmp_1;
_tmp_1 = _cursor.getString(_cursorIndexOfActivationDate);
_item._activationDate = DateStringConverter.intoDate(_tmp_1);
_item.points = _cursor.getInt(_cursorIndexOfPoints);
_result.add(_item);
}
return _result;
} finally {
_cursor.close();
}
}
@Override
protected void finalize() {
_statement.release();
}
}.getLiveData();
}
}
And this line:
_item.getId = _cursor.getInt(_cursorIndexOfId);
Is causing the error:
error: cannot find symbol variable getId
because there is no field getId in class Task. Please note that class mentioned above is not written by me. It's automatically generated by Android Studio.
I wonder why this happen? If I delete function getId() from Task class, everything becomes all right. For the generated code mentioned above, once I delete getId() function, the suspicious line turns into:
_item._id = _cursor.getInt(_cursorIndexOfId);
And everything compiles all right. Can anyone explain it?
android dao
I have noticed no understandable error of generated implementation for my DAO, when using Android Room. First of all I need to mention that I'm making my app as a modification of Android Room with a View.
I have a class for Task:
app/java/com.example.blah/Task.java:
package ...
import ...
@Entity
public class Task {
@PrimaryKey(autoGenerate = true)
@NonNull
@ColumnInfo(name = "id")
protected int _id;
@NonNull
@ColumnInfo(name = "description")
protected String _description;
public Task(@NonNull String description) {
_description = description;
}
public int getId() {
return _id;
}
public String getDescription() {return _description;}
}
When I try to build this code I'm getting compilation error from one of the generated classes:
app/generatedJava/com.example.blah/TaskDAO_Impl.java
package ...
import ...
@SuppressWarnings("unchecked")
public class TaskDAO_Impl implements TaskDAO {
private final RoomDatabase __db;
private final EntityInsertionAdapter __insertionAdapterOfTask;
private final SharedSQLiteStatement __preparedStmtOfDeleteAll;
public TaskDAO_Impl(RoomDatabase __db) {
this.__db = __db;
this.__insertionAdapterOfTask = new EntityInsertionAdapter<Task>(__db) {
@Override
public String createQuery() {
return "INSERT OR ABORT INTO `Task`(`id`,`description`) VALUES (nullif(?, 0),?)";
}
@Override
public void bind(SupportSQLiteStatement stmt, Task value) {
stmt.bindLong(1, value.getId());
if (value.getDescription() == null) {
stmt.bindNull(2);
} else {
stmt.bindString(2, value.getDescription());
}
}
};
this.__preparedStmtOfDeleteAll = new SharedSQLiteStatement(__db) {
@Override
public String createQuery() {
final String _query = "DELETE FROM Task";
return _query;
}
};
}
@Override
public void insert(Task task) {
__db.beginTransaction();
try {
__insertionAdapterOfTask.insert(task);
__db.setTransactionSuccessful();
} finally {
__db.endTransaction();
}
}
@Override
public void deleteAll() {
final SupportSQLiteStatement _stmt = __preparedStmtOfDeleteAll.acquire();
__db.beginTransaction();
try {
_stmt.executeUpdateDelete();
__db.setTransactionSuccessful();
} finally {
__db.endTransaction();
__preparedStmtOfDeleteAll.release(_stmt);
}
}
@Override
public LiveData<List<Task>> getAllTasks() {
final String _sql = "SELECT * FROM Task ORDER BY description ASC";
final RoomSQLiteQuery _statement = RoomSQLiteQuery.acquire(_sql, 0);
return new ComputableLiveData<List<Task>>() {
private Observer _observer;
@Override
protected List<Task> compute() {
if (_observer == null) {
_observer = new Observer("Task") {
@Override
public void onInvalidated(@NonNull Set<String> tables) {
invalidate();
}
};
__db.getInvalidationTracker().addWeakObserver(_observer);
}
final Cursor _cursor = __db.query(_statement);
try {
final int _cursorIndexOfId = _cursor.getColumnIndexOrThrow("id");
final int _cursorIndexOfDescription = _cursor.getColumnIndexOrThrow("description");
final List<Task> _result = new ArrayList<Task>(_cursor.getCount());
while(_cursor.moveToNext()) {
final Task _item;
final String _tmp_description;
_tmp_description = _cursor.getString(_cursorIndexOfDescription);
_item.getId = _cursor.getInt(_cursorIndexOfId);
final String _tmp_1;
_tmp_1 = _cursor.getString(_cursorIndexOfActivationDate);
_item._activationDate = DateStringConverter.intoDate(_tmp_1);
_item.points = _cursor.getInt(_cursorIndexOfPoints);
_result.add(_item);
}
return _result;
} finally {
_cursor.close();
}
}
@Override
protected void finalize() {
_statement.release();
}
}.getLiveData();
}
}
And this line:
_item.getId = _cursor.getInt(_cursorIndexOfId);
Is causing the error:
error: cannot find symbol variable getId
because there is no field getId in class Task. Please note that class mentioned above is not written by me. It's automatically generated by Android Studio.
I wonder why this happen? If I delete function getId() from Task class, everything becomes all right. For the generated code mentioned above, once I delete getId() function, the suspicious line turns into:
_item._id = _cursor.getInt(_cursorIndexOfId);
And everything compiles all right. Can anyone explain it?
android dao
android dao
asked Nov 12 '18 at 18:56
AsmoxAsmox
358
358
add a comment |
add a comment |
0
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53268423%2fgetid-method-of-entity-generates-label-collisions-in-dao-impl%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53268423%2fgetid-method-of-entity-generates-label-collisions-in-dao-impl%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown