【发布时间】:2021-11-14 19:16:27
【问题描述】:
我遇到了构建错误,无法解决。 需要帮助
这是我的 stacktrace:
> E:\Repo\uss\app\build\tmp\kapt3\stubs\developDebug\com\idware\uss\DataBase\DAO\NotificationsDao.java:22:
> error: Query method parameters should either be a type that can be
> converted into a database column or a List / Array that contains such
> type. You can consider adding a Type Adapter for this.
> kotlin.coroutines.Continuation<? super com.idware.uss.DataBase.DBModels.Notification> p0);
> ^E:\Repo\uss\app\build\tmp\kapt3\stubs\developDebug\com\idware\uss\DataBase\DAO\NotificationsDao.java:21:
> error: Not sure how to convert a Cursor to this method's return type
> (java.lang.Object).
> public abstract java.lang.Object getLastNotification(@org.jetbrains.annotations.NotNull()
> ^E:\Repo\uss\app\build\tmp\kapt3\stubs\developDebug\com\idware\uss\DataBase\DAO\NotificationsDao.java:21:
> error: Unused parameter: p0
> public abstract java.lang.Object getLastNotification(@org.jetbrains.annotations.NotNull()
> ^E:\Repo\uss\app\build\tmp\kapt3\stubs\developDebug\com\idware\uss\DataBase\DAO\NotificationsDao.java:27:
> error: Query method parameters should either be a type that can be
> converted into a database column or a List / Array that contains such
> type. You can consider adding a Type Adapter for this.
> kotlin.coroutines.Continuation<? super java.lang.Integer> p0);
> ^E:\Repo\uss\app\build\tmp\kapt3\stubs\developDebug\com\idware\uss\DataBase\DAO\NotificationsDao.java:26:
> error: Not sure how to convert a Cursor to this method's return type
> (java.lang.Object).
> public abstract java.lang.Object getNotificationCount(@org.jetbrains.annotations.NotNull()
> ^E:\Repo\uss\app\build\tmp\kapt3\stubs\developDebug\com\idware\uss\DataBase\DAO\NotificationsDao.java:26:
> error: Unused parameter: p0
> public abstract java.lang.Object getNotificationCount(@org.jetbrains.annotations.NotNull()
> ^E:\Repo\uss\app\build\tmp\kapt3\stubs\developDebug\com\idware\uss\DataBase\DAO\NotificationsDao.java:13:
> error: Type of the parameter must be a class annotated with @Entity or
> a collection/array of it.
> kotlin.coroutines.Continuation<? super kotlin.Unit> p1);
> ^E:\Repo\uss\app\build\tmp\kapt3\stubs\developDebug\com\idware\uss\DataBase\DAO\NotificationsDao.java:11:
> error: Not sure how to handle insert method's return type.
> public abstract java.lang.Object insertNotification(@org.jetbrains.annotations.NotNull()
> ^E:\Repo\uss\app\build\tmp\kapt3\stubs\developDebug\com\idware\uss\DataBase\DAO\BaseConfigurationsDao.java:18:
> error: Query method parameters should either be a type that can be
> converted into a database column or a List / Array that contains such
> type. You can consider adding a Type Adapter for this.
> kotlin.coroutines.Continuation<? super java.lang.Integer> p0);
> ^E:\Repo\uss\app\build\tmp\kapt3\stubs\developDebug\com\idware\uss\DataBase\DAO\BaseConfigurationsDao.java:17:
> error: Not sure how to convert a Cursor to this method's return type
> (java.lang.Object).
> public abstract java.lang.Object getBaseConfigCount(@org.jetbrains.annotations.NotNull()
> ^E:\Repo\uss\app\build\tmp\kapt3\stubs\developDebug\com\idware\uss\DataBase\DAO\BaseConfigurationsDao.java:17:
> error: Unused parameter: p0
> public abstract java.lang.Object getBaseConfigCount(@org.jetbrains.annotations.NotNull()
> ^E:\Repo\uss\app\build\tmp\kapt3\stubs\developDebug\com\idware\uss\DataBase\DAO\BaseConfigurationsDao.java:23:
> error: Query method parameters should either be a type that can be
> converted into a database column or a List / Array that contains such
> type. You can consider adding a Type Adapter for this.
> kotlin.coroutines.Continuation<? super com.idware.uss.DataBase.DBModels.BaseConfigurations> p0);
> ^E:\Repo\uss\app\build\tmp\kapt3\stubs\developDebug\com\idware\uss\DataBase\DAO\BaseConfigurationsDao.java:22:
> error: Not sure how to convert a Cursor to this method's return type
> (java.lang.Object).
> public abstract java.lang.Object getLatestBaseConfig(@org.jetbrains.annotations.NotNull()
> ^E:\Repo\uss\app\build\tmp\kapt3\stubs\developDebug\com\idware\uss\DataBase\DAO\BaseConfigurationsDao.java:22:
> error: Unused parameter: p0
> public abstract java.lang.Object getLatestBaseConfig(@org.jetbrains.annotations.NotNull()
> ^E:\Repo\uss\app\build\tmp\kapt3\stubs\developDebug\com\idware\uss\DataBase\DAO\BaseConfigurationsDao.java:27:
> error: Not sure how to handle query method's return type
> (java.lang.Object). UPDATE query methods must either return void or
> int (the number of updated rows).
> public abstract java.lang.Object updateBaseConfigurationsEmail(@org.jetbrains.annotations.NotNull()
> ^E:\Repo\uss\app\build\tmp\kapt3\stubs\developDebug\com\idware\uss\DataBase\DAO\BaseConfigurationsDao.java:30:
> error: Query method parameters should either be a type that can be
> converted into a database column or a List / Array that contains such
> type. You can consider adding a Type Adapter for this.
> kotlin.coroutines.Continuation<? super kotlin.Unit> p2);
> ^E:\Repo\uss\app\build\tmp\kapt3\stubs\developDebug\com\idware\uss\DataBase\DAO\BaseConfigurationsDao.java:27:
> error: Unused parameter: p2
> public abstract java.lang.Object updateBaseConfigurationsEmail(@org.jetbrains.annotations.NotNull()
> ^E:\Repo\uss\app\build\tmp\kapt3\stubs\developDebug\com\idware\uss\DataBase\DAO\BaseConfigurationsDao.java:13:
> error: Type of the parameter must be a class annotated with @Entity or
> a collection/array of it.
> kotlin.coroutines.Continuation<? super kotlin.Unit> p1);
> ^E:\Repo\uss\app\build\tmp\kapt3\stubs\developDebug\com\idware\uss\DataBase\DAO\BaseConfigurationsDao.java:11:
> error: Not sure how to handle insert method's return type.
> public abstract java.lang.Object insertBaseConfig(@org.jetbrains.annotations.NotNull()
> ^E:\Repo\uss\app\build\tmp\kapt3\stubs\developDebug\com\idware\uss\DataBase\DAO\AppConfigurationsDao.java:18:
> error: Query method parameters should either be a type that can be
> converted into a database column or a List / Array that contains such
> type. You can consider adding a Type Adapter for this.
> kotlin.coroutines.Continuation<? super java.lang.Integer> p0);
> ^E:\Repo\uss\app\build\tmp\kapt3\stubs\developDebug\com\idware\uss\DataBase\DAO\AppConfigurationsDao.java:17:
> error: Not sure how to convert a Cursor to this method's return type
> (java.lang.Object).
> public abstract java.lang.Object getAppConfigCount(@org.jetbrains.annotations.NotNull()
> ^E:\Repo\uss\app\build\tmp\kapt3\stubs\developDebug\com\idware\uss\DataBase\DAO\AppConfigurationsDao.java:17:
> error: Unused parameter: p0
> public abstract java.lang.Object getAppConfigCount(@org.jetbrains.annotations.NotNull()
> ^E:\Repo\uss\app\build\tmp\kapt3\stubs\developDebug\com\idware\uss\DataBase\DAO\AppConfigurationsDao.java:23:
> error: Query method parameters should either be a type that can be
> converted into a database column or a List / Array that contains such
> type. You can consider adding a Type Adapter for this.
> kotlin.coroutines.Continuation<? super com.idware.uss.DataBase.DBModels.AppConfigurations> p0);
> ^E:\Repo\uss\app\build\tmp\kapt3\stubs\developDebug\com\idware\uss\DataBase\DAO\AppConfigurationsDao.java:22:
> error: Not sure how to convert a Cursor to this method's return type
> (java.lang.Object).
> public abstract java.lang.Object getLatestAppConfig(@org.jetbrains.annotations.NotNull()
> ^E:\Repo\uss\app\build\tmp\kapt3\stubs\developDebug\com\idware\uss\DataBase\DAO\AppConfigurationsDao.java:22:
> error: Unused parameter: p0
> public abstract java.lang.Object getLatestAppConfig(@org.jetbrains.annotations.NotNull()
> ^E:\Repo\uss\app\build\tmp\kapt3\stubs\developDebug\com\idware\uss\DataBase\DAO\AppConfigurationsDao.java:13:
> error: Type of the parameter must be a class annotated with @Entity or
> a collection/array of it.
> kotlin.coroutines.Continuation<? super kotlin.Unit> p1);
> ^E:\Repo\uss\app\build\tmp\kapt3\stubs\developDebug\com\idware\uss\DataBase\DAO\AppConfigurationsDao.java:11:
> error: Not sure how to handle insert method's return type.
> public abstract java.lang.Object insertAppConfig(@org.jetbrains.annotations.NotNull()
> ^E:\Repo\uss\app\build\tmp\kapt3\stubs\reviewDebug\com\idware\uss\DataBase\DAO\NotificationsDao.java:22:
> error: Query method parameters should either be a type that can be
> converted into a database column or a List / Array that contains such
> type. You can consider adding a Type Adapter for this.
> kotlin.coroutines.Continuation<? super com.idware.uss.DataBase.DBModels.Notification> p0);
> ^E:\Repo\uss\app\build\tmp\kapt3\stubs\reviewDebug\com\idware\uss\DataBase\DAO\NotificationsDao.java:21:
> error: Not sure how to convert a Cursor to this method's return type
> (java.lang.Object).
> public abstract java.lang.Object getLastNotification(@org.jetbrains.annotations.NotNull()
> ^E:\Repo\uss\app\build\tmp\kapt3\stubs\reviewDebug\com\idware\uss\DataBase\DAO\NotificationsDao.java:21:
> error: Unused parameter: p0
> public abstract java.lang.Object getLastNotification(@org.jetbrains.annotations.NotNull()
> ^E:\Repo\uss\app\build\tmp\kapt3\stubs\reviewDebug\com\idware\uss\DataBase\DAO\NotificationsDao.java:27:
> error: Query method parameters should either be a type that can be
> converted into a database column or a List / Array that contains such
> type. You can consider adding a Type Adapter for this.
> kotlin.coroutines.Continuation<? super java.lang.Integer> p0);
> ^E:\Repo\uss\app\build\tmp\kapt3\stubs\reviewDebug\com\idware\uss\DataBase\DAO\NotificationsDao.java:26:
> error: Not sure how to convert a Cursor to this method's return type
> (java.lang.Object).
> public abstract java.lang.Object getNotificationCount(@org.jetbrains.annotations.NotNull()
> ^E:\Repo\uss\app\build\tmp\kapt3\stubs\reviewDebug\com\idware\uss\DataBase\DAO\NotificationsDao.java:26:
> error: Unused parameter: p0
> public abstract java.lang.Object getNotificationCount(@org.jetbrains.annotations.NotNull()
> ^E:\Repo\uss\app\build\tmp\kapt3\stubs\reviewDebug\com\idware\uss\DataBase\DAO\NotificationsDao.java:13:
> error: Type of the parameter must be a class annotated with @Entity or
> a collection/array of it.
> kotlin.coroutines.Continuation<? super kotlin.Unit> p1);
> ^E:\Repo\uss\app\build\tmp\kapt3\stubs\reviewDebug\com\idware\uss\DataBase\DAO\NotificationsDao.java:11:
> error: Not sure how to handle insert method's return type.
> public abstract java.lang.Object insertNotification(@org.jetbrains.annotations.NotNull()
> ^E:\Repo\uss\app\build\tmp\kapt3\stubs\reviewDebug\com\idware\uss\DataBase\DAO\BaseConfigurationsDao.java:18:
> error: Query method parameters should either be a type that can be
> converted into a database column or a List / Array that contains such
> type. You can consider adding a Type Adapter for this.
> kotlin.coroutines.Continuation<? super java.lang.Integer> p0);
> ^E:\Repo\uss\app\build\tmp\kapt3\stubs\reviewDebug\com\idware\uss\DataBase\DAO\BaseConfigurationsDao.java:17:
> error: Not sure how to convert a Cursor to this method's return type
> (java.lang.Object).
> public abstract java.lang.Object getBaseConfigCount(@org.jetbrains.annotations.NotNull()
> ^E:\Repo\uss\app\build\tmp\kapt3\stubs\reviewDebug\com\idware\uss\DataBase\DAO\BaseConfigurationsDao.java:17:
> error: Unused parameter: p0
> public abstract java.lang.Object getBaseConfigCount(@org.jetbrains.annotations.NotNull()
> ^E:\Repo\uss\app\build\tmp\kapt3\stubs\reviewDebug\com\idware\uss\DataBase\DAO\BaseConfigurationsDao.java:23:
> error: Query method parameters should either be a type that can be
> converted into a database column or a List / Array that contains such
> type. You can consider adding a Type Adapter for this.
> kotlin.coroutines.Continuation<? super com.idware.uss.DataBase.DBModels.BaseConfigurations> p0);
> ^E:\Repo\uss\app\build\tmp\kapt3\stubs\reviewDebug\com\idware\uss\DataBase\DAO\BaseConfigurationsDao.java:22:
> error: Not sure how to convert a Cursor to this method's return type
> (java.lang.Object).
> public abstract java.lang.Object getLatestBaseConfig(@org.jetbrains.annotations.NotNull()
> ^E:\Repo\uss\app\build\tmp\kapt3\stubs\reviewDebug\com\idware\uss\DataBase\DAO\BaseConfigurationsDao.java:22:
> error: Unused parameter: p0
> public abstract java.lang.Object getLatestBaseConfig(@org.jetbrains.annotations.NotNull()
> ^E:\Repo\uss\app\build\tmp\kapt3\stubs\reviewDebug\com\idware\uss\DataBase\DAO\BaseConfigurationsDao.java:27:
> error: Not sure how to handle query method's return type
> (java.lang.Object). UPDATE query methods must either return void or
> int (the number of updated rows).
> public abstract java.lang.Object updateBaseConfigurationsEmail(@org.jetbrains.annotations.NotNull()
> ^E:\Repo\uss\app\build\tmp\kapt3\stubs\reviewDebug\com\idware\uss\DataBase\DAO\BaseConfigurationsDao.java:30:
> error: Query method parameters should either be a type that can be
> converted into a database column or a List / Array that contains such
> type. You can consider adding a Type Adapter for this.
> kotlin.coroutines.Continuation<? super kotlin.Unit> p2);
> ^E:\Repo\uss\app\build\tmp\kapt3\stubs\reviewDebug\com\idware\uss\DataBase\DAO\BaseConfigurationsDao.java:27:
> error: Unused parameter: p2
> public abstract java.lang.Object updateBaseConfigurationsEmail(@org.jetbrains.annotations.NotNull()
> ^E:\Repo\uss\app\build\tmp\kapt3\stubs\reviewDebug\com\idware\uss\DataBase\DAO\BaseConfigurationsDao.java:13:
> error: Type of the parameter must be a class annotated with @Entity or
> a collection/array of it.
> kotlin.coroutines.Continuation<? super kotlin.Unit> p1);
> ^E:\Repo\uss\app\build\tmp\kapt3\stubs\reviewDebug\com\idware\uss\DataBase\DAO\BaseConfigurationsDao.java:11:
> error: Not sure how to handle insert method's return type.
> public abstract java.lang.Object insertBaseConfig(@org.jetbrains.annotations.NotNull()
> ^E:\Repo\uss\app\build\tmp\kapt3\stubs\reviewDebug\com\idware\uss\DataBase\DAO\AppConfigurationsDao.java:18:
> error: Query method parameters should either be a type that can be
> converted into a database column or a List / Array that contains such
> type. You can consider adding a Type Adapter for this.
> kotlin.coroutines.Continuation<? super java.lang.Integer> p0);
> ^E:\Repo\uss\app\build\tmp\kapt3\stubs\reviewDebug\com\idware\uss\DataBase\DAO\AppConfigurationsDao.java:17:
> error: Not sure how to convert a Cursor to this method's return type
> (java.lang.Object).
> public abstract java.lang.Object getAppConfigCount(@org.jetbrains.annotations.NotNull()
> ^E:\Repo\uss\app\build\tmp\kapt3\stubs\reviewDebug\com\idware\uss\DataBase\DAO\AppConfigurationsDao.java:17:
> error: Unused parameter: p0
> public abstract java.lang.Object getAppConfigCount(@org.jetbrains.annotations.NotNull()
> ^E:\Repo\uss\app\build\tmp\kapt3\stubs\reviewDebug\com\idware\uss\DataBase\DAO\AppConfigurationsDao.java:23:
> error: Query method parameters should either be a type that can be
> converted into a database column or a List / Array that contains such
> type. You can consider adding a Type Adapter for this.
> kotlin.coroutines.Continuation<? super com.idware.uss.DataBase.DBModels.AppConfigurations> p0);
> ^E:\Repo\uss\app\build\tmp\kapt3\stubs\reviewDebug\com\idware\uss\DataBase\DAO\AppConfigurationsDao.java:22:
> error: Not sure how to convert a Cursor to this method's return type
> (java.lang.Object).
> public abstract java.lang.Object getLatestAppConfig(@org.jetbrains.annotations.NotNull()
> ^E:\Repo\uss\app\build\tmp\kapt3\stubs\reviewDebug\com\idware\uss\DataBase\DAO\AppConfigurationsDao.java:22:
> error: Unused parameter: p0
> public abstract java.lang.Object getLatestAppConfig(@org.jetbrains.annotations.NotNull()
> ^E:\Repo\uss\app\build\tmp\kapt3\stubs\reviewDebug\com\idware\uss\DataBase\DAO\AppConfigurationsDao.java:13:
> error: Type of the parameter must be a class annotated with @Entity or
> a collection/array of it.
> kotlin.coroutines.Continuation<? super kotlin.Unit> p1);
> ^E:\Repo\uss\app\build\tmp\kapt3\stubs\reviewDebug\com\idware\uss\DataBase\DAO\AppConfigurationsDao.java:11:
> error: Not sure how to handle insert method's return type.
> public abstract java.lang.Object insertAppConfig(@org.jetbrains.annotations.NotNull()
即使我更新了一些东西,但堆栈跟踪保持不变
DAO 的
NotificationsDao
@Dao
interface NotificationsDao {
@Insert(onConflict = OnConflictStrategy.IGNORE)
suspend fun insertNotification(notification: Notification)
@Query("SELECT * from notifications where type = 0 ORDER BY date DESC")
fun getAllSubscriberNotifications(): LiveData<List<Notification>>
@Query("SELECT * FROM notifications ORDER BY date DESC LIMIT 1")
suspend fun getLastNotification(): Notification?
@Query("SELECT COUNT(*) FROM notifications WHERE type = 0 ")
suspend fun getNotificationCount(): Int
}
BaseConfigurationsDao
@Dao
interface BaseConfigurationsDao {
@Insert(onConflict = OnConflictStrategy.IGNORE)
suspend fun insertBaseConfig(baseConfigurations: BaseConfigurations)
@Query("SELECT COUNT(*) FROM base_configurations")
suspend fun getBaseConfigCount(): Int
@Query("SELECT * FROM base_configurations WHERE id = (SELECT MAX(id) FROM base_configurations) ")
suspend fun getLatestBaseConfig(): BaseConfigurations?
@Query("UPDATE base_configurations SET userEmail = :newEmail WHERE userEmail = :oldEmail")
suspend fun updateBaseConfigurationsEmail(oldEmail: String, newEmail: String)
}
AppConfigurationsDao
@Dao
interface AppConfigurationsDao {
@Insert(onConflict = OnConflictStrategy.IGNORE)
suspend fun insertAppConfig(appConfigurations: AppConfigurations)
@Query("SELECT COUNT(*) FROM app_configurations")
suspend fun getAppConfigCount(): Int
@Query("SELECT * FROM app_configurations WHERE id = (SELECT MAX(id) FROM app_configurations) ")
suspend fun getLatestAppConfig(): AppConfigurations?
}
实体
通知
@Entity(tableName = DB_Constants.TABLE_NOTIFICATIONS)
class Notification(
@ColumnInfo(name = "title")
val title: String,
@ColumnInfo(name = "body")
val body: String,
@ColumnInfo(name = "date")
val dateReceived: Date,
@ColumnInfo(name = "type")
val notificationType: String,
@ColumnInfo(name = "email")
val notificationEmail: String,
@PrimaryKey(autoGenerate = true)
@ColumnInfo(name = "id")
val id: Int = 0
)
基础配置
@Entity(tableName = DB_Constants.TABLE_BASE_CONFIGURATIONS)
class BaseConfigurations(
@ColumnInfo(name = "abc")
val abc: String,
@ColumnInfo(name = "xyz")
val xyz: String,
@ColumnInfo(name = "Email")
val Email: String,
@PrimaryKey(autoGenerate = true)
@ColumnInfo(name = "id")
val id: Int = 0
)
应用配置
@Entity(tableName = DB_Constants.TABLE_APP_CONFIGURATIONS)
class AppConfigurations(
@ColumnInfo(name = "brandingName")
val brandingName: String?,
@ColumnInfo(name = "copyrightText")
val copyrightText: String?,
@ColumnInfo(name = "bgColor")
val bgColor: String?,
@ColumnInfo(name = "fontColor")
val fontColor: String?,
@ColumnInfo(name = "logoUrl")
val logoUrl: String?,
@ColumnInfo(name = "Detail")
val Detail: String?,
@ColumnInfo(name = "Logo")
val Logo: String?,
@PrimaryKey(autoGenerate = true)
@ColumnInfo(name = "id")
val id: Int = 0
)
转换器
class Converters {
@TypeConverter
fun fromTimestamp(value: Long): Date {
return Date(value)
}
@TypeConverter
fun dateToTimestamp(date: Date): Long {
return date.time
}
}
数据库
@Database(entities = [Notification::class, BaseConfigurations::class,
AppConfigurations::class], version = DB_Constants.DB_VERSION)
@TypeConverters(Converters::class)
abstract class AbcDatabase : RoomDatabase() {
abstract fun notificationsDao(): NotificationsDao
abstract fun baseConfigurationsDao(): BaseConfigurationsDao
abstract fun appConfigurationsDao(): AppConfigurationsDao
companion object {
private lateinit var instance: USSDatabase
fun getDatabase(context: Context): USSDatabase {
if (::instance.isInitialized)
return instance
synchronized(this) {
instance = Room.databaseBuilder(
context.applicationContext,
AbcDatabase::class.java,
DB_Constants.DB_NAME
)
.fallbackToDestructiveMigration()
.build()
return instance
}
}
}
}
【问题讨论】:
标签: java android sqlite kotlin android-room