【发布时间】:2018-07-16 05:22:19
【问题描述】:
PersistentAsset 样本定义:
/**
* The family of schemas for [Asset].
*/
object AssetSchema
/**
* An [Asset] schema.
*/
object AssetSchemaV1 : MappedSchema(
schemaFamily = AssetSchema.javaClass,
version = 1,
mappedTypes = listOf(PersistentAsset::class.java)) {
@Entity
@Table(name = "asset_states", indexes = arrayOf(Index(name = "asset_linear_id_idx", columnList = "linear_id"),
Index(name = "asset_owner_idx", columnList = "asset_owner")))
class PersistentAsset(
@Column(name = "cusip")
var cusip: String,
@Column(name = "asset_owner")
var owner: String,
@Column(name = "trade_id")
var tradeId: String,
@Column(name = "collateral_status")
var status: String
) : PersistentState() {
constructor() : this("", "", "", "")
}
}
但是当我在 FlowLogic 中运行以下查询时:
val session = DatabaseTransactionManager.current().session
val criteriaBuilder = session.criteriaBuilder
val criteriaQuery = criteriaBuilder.createQuery(Array<Any>::class.java)
val fromAsset = criteriaQuery.from(PersistentAsset::class.java)
criteriaQuery.select(criteriaBuilder.array(fromAsset.get<String>(PersistentAsset::cusip.name)))
val cusips = session.createQuery(criteriaQuery).resultList
它抛出:java.lang.IllegalArgumentException: Not an entity: class com.example.schema.AssetSchemaV1$PersistentAsset
不知道为什么在使用PersistentAsset 架构类注释@Entity 后收到此错误
【问题讨论】:
-
您是否为主键添加了@Id??