You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Create an entities linked with foreign key one to one
interface SomeEntity() {
@get:Key
var id: Long
var name: String
@get:OneToOne
@get:ForeignKey
var fk: OtherEntity
}
interface OtherEntity() {
@get:Key
var id: Long
var name: String
@get:OneToOne(mappedBy = "fk")
var someEntity: SomeEntity
}
Insert 2 SomeEntities mapped to single OtherEntity. E.g. SomeEntity{ id = 1, fk.id = 1 } and SomeEntity{ id = 2, fk.id = 1 }
Expected: insert for OtherEntity runs once
Instead: insert for OtherEntity runs twice and fails on second run with
io.requery.sql.StatementExecutionException: Exception executing statement: insert into OtherEntity (id, name) values (?, ?)
at io.requery.sql.EntityUpdateOperation$1.evaluate(EntityUpdateOperation.java:59)
at io.requery.sql.EntityUpdateOperation$1.evaluate(EntityUpdateOperation.java:40)
at io.requery.query.BaseScalar.value(BaseScalar.java:48)
at io.requery.sql.EntityWriter.insert(EntityWriter.java:457)
at io.requery.sql.EntityWriter.cascadeWrite(EntityWriter.java:948)
at io.requery.sql.EntityWriter.cascadeKeyReference(EntityWriter.java:932)
at io.requery.sql.EntityWriter.insert(EntityWriter.java:445)
at io.requery.sql.EntityWriter.upsert(EntityWriter.java:490)
at io.requery.sql.EntityWriter.cascadeWrite(EntityWriter.java:960)
at io.requery.sql.EntityWriter.updateMappedAssociation(EntityWriter.java:841)
at io.requery.sql.EntityWriter.updateAssociation(EntityWriter.java:697)
at io.requery.sql.EntityWriter.updateAssociations(EntityWriter.java:666)
at io.requery.sql.EntityWriter.insert(EntityWriter.java:459)
at io.requery.sql.EntityWriter.insert(EntityWriter.java:411)
at io.requery.sql.EntityDataStore.insert(EntityDataStore.java:206)
at io.requery.sql.EntityDataStore.insert(EntityDataStore.java:192)
at io.requery.sql.KotlinEntityDataStore.insert(KotlinEntityDataStore.kt:119)
at io.requery.reactivex.KotlinReactiveEntityStore$insert$1.call(KotlinReactiveEntityStore.kt:57)
at io.reactivex.internal.operators.single.SingleFromCallable.subscribeActual(SingleFromCallable.java:44)
at io.reactivex.Single.subscribe(Single.java:3603)
at io.reactivex.internal.operators.single.SingleSubscribeOn$SubscribeOnObserver.run(SingleSubscribeOn.java:89)
at io.reactivex.Scheduler$DisposeTask.run(Scheduler.java:578)
at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:66)
at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:57)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:301)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
at java.lang.Thread.run(Thread.java:764)
Caused by: java.sql.SQLIntegrityConstraintViolationException: android.database.sqlite.SQLiteConstraintException: UNIQUE constraint failed: OtherEntity.id (code 1555)
#################################################################
Error Code : 1555 (SQLITE_CONSTRAINT_PRIMARYKEY)
Caused By : Abort due to constraint violation.
(UNIQUE constraint failed: OtherEntity.id (code 1555))
#################################################################
at io.requery.android.sqlite.BaseConnection$Companion.throwSQLException(BaseConnection.kt:284)
at io.requery.android.sqlite.SqlitePreparedStatement.executeUpdate(SqlitePreparedStatement.kt:148)
at io.requery.sql.EntityUpdateOperation$1.evaluate(EntityUpdateOperation.java:54)
... 28 more
Caused by: android.database.sqlite.SQLiteConstraintException: UNIQUE constraint failed: OtherEntity.id (code 1555)
#################################################################
Error Code : 1555 (SQLITE_CONSTRAINT_PRIMARYKEY)
Caused By : Abort due to constraint violation.
(UNIQUE constraint failed: OtherEntity.id (code 1555))
#################################################################
at android.database.sqlite.SQLiteConnection.nativeExecuteForChangedRowCount(Native Method)
at android.database.sqlite.SQLiteConnection.executeForChangedRowCount(SQLiteConnection.java:938)
at android.database.sqlite.SQLiteSession.executeForChangedRowCount(SQLiteSession.java:754)
at android.database.sqlite.SQLiteStatement.executeUpdateDelete(SQLiteStatement.java:64)
at io.requery.android.sqlite.SqlitePreparedStatement.executeUpdate(SqlitePreparedStatement.kt:146)
Added referenced via @Generated localId as a quickfix.
The text was updated successfully, but these errors were encountered:
requeryVersion = "1.6.1"
SomeEntity{ id = 1, fk.id = 1 }
andSomeEntity{ id = 2, fk.id = 1 }
Expected: insert for OtherEntity runs once
Instead: insert for OtherEntity runs twice and fails on second run with
Added referenced via
@Generated localId
as a quickfix.The text was updated successfully, but these errors were encountered: