我需要利用现有的数据库结构,该数据库结构与JPA(Jakarta Persistence API)兼容,以通过Hibernate Orm在Spring Boot中使用。 我想基本上将此数据库结构复制为Android Room数据库,还使用Kotlin Serialization插件 /库。 原始数据库库
cannot使用任何Android依赖关系。 我面临的问题是Android Room数据库中的注释。 我找不到将字段指定为原始
Entity
的主要密钥的方法。 示例如下...customerentity.kt- JPA实体类兼容与Spring HibernatePrimaryKey
customerandroid.kt-尝试亚班级JPA实体class
Entity
使用使用
@Serializable
@Entity
@Table(
name = CustomerEntity.Constants.TABLE_NAME,
indexes = [Index(name = "IX_Customer_CustomerName", columnList = "CustomerName")]
)
open class CustomerEntity(
@Id
@Column(name = Constants.COLUMN_ID_NAME, nullable = false, length = 15)
open var id: String = "",
@Column(name = Constants.COLUMN_CUSTOMERNAME_NAME, length = 40)
var customerName: String = "",
) {
object Constants {
const val TABLE_NAME: String = "Customer"
const val COLUMN_ID_NAME: String = "CustomerID"
const val COLUMN_CUSTOMERNAME_NAME: String = "CustomerName"
}
}
会产生一个问题::
@Serializable
@Entity(tableName = CustomerSchema.TABLE_NAME)
class CustomerAndroid() : CustomerEntity() {
constructor(
customerID: String,
customerName: String = ""
) : this() {
this.id = customerID
this.customerName = customerName
}
@PrimaryKey
override var id: String = ""
}
我正在试图找到一种将注释附加到Android室中主要钥匙字段的方法,但是我遇到了很多头痛,让这些框架和库彼此效果很好。
我能够通过创建一个新的类,其中包含在新类中属于属性的实体上的
override
注释来解决此问题。 这使我能够构建DAO类,可以直接引用实体类中的字段。 这是我能找到的最好的妥协。
示例:kotlinx.serialization
Serializable class has duplicate serial name of property 'id', either in the class itself or its supertypes
如您所见,您可以直接参考@Embedded
注释中的字段。