android 你必须用@ Nonkey来注解主键吗?

cnh2zyt3  于 2023-11-15  发布在  Android
关注(0)|答案(4)|浏览(198)

我在这段代码中得到了这个错误。You must annotate primary keys with @NonNull. "uidString" is nullable.当我用@ Nonkey和@PrimaryKey注解它时,An entity must have at least 1 field annotated with @PrimaryKey
怎么了?

  1. import androidx.annotation.NonNull;
  2. import androidx.room.ColumnInfo;
  3. import androidx.room.Entity;
  4. import androidx.room.PrimaryKey;
  5. import java.util.UUID;
  6. @Entity(tableName = "player_profiles")
  7. public class PlayerGameProfile implements Parcelable {
  8. @PrimaryKey
  9. public String uidString = UUID.randomUUID().toString();
  10. @ColumnInfo(name = "name")
  11. public String name;

字符串

hk8txs48

hk8txs481#

对于Java,您应该使用@android.support.annotation.NonNull进行注解
删除您正在使用的另一个非同步导入,并将其更改为

  1. import android.support.annotation.NonNull;

字符串
然后使用这两个注解

  1. @PrimaryKey
  2. @NonNull

krcsximq

krcsximq2#

在我的情况下,我有:

  1. @PrimaryKey @NonNull var reasonId: String? = Constants.EMPTY_STRING,

字符串
而不是:

  1. @PrimaryKey @NonNull var reasonId: String = Constants.EMPTY_STRING,

r8uurelv

r8uurelv3#

您可以尝试像这样将主键与实体绑定:

  1. @Entity(tableName = "player_profiles",
  2. primaryKeys = { "uidString" })

字符串
然后在下面的类中用@NonNull注解你的主键。

  1. @NonNull
  2. public String uidString = UUID.randomUUID().toString();

rseugnpd

rseugnpd4#

检查大小写敏感性,它应该是“@Nonnull”而不是“@Nonnull”import androidx.annotation.Nonnull;

相关问题