【发布时间】:2019-06-11 23:00:18
【问题描述】:
我读到在 @ManyToOne 关联注释中指定 optional = false 可以帮助 Spring 提高查询的性能。
在 Kotlin 数据类实体中,我真的需要在注解中指定参数,还是 Spring 可以使用 item 字段的可空性自行解决?
例如,如果我有以下声明:
@Entity
@Table(name = ACCESS_LOGS_ARCHIVES_TABLE, indexes = [
Index(name = "access_logs_archives_item_idx", columnList = "access_item_id")
])
data class AccessLogArchive(
val date: LocalDate,
@ManyToOne(optional = false)
@JoinColumn(name = "access_item_id", nullable = false)
val item: AccessLogItem,
val occurrences: Int
) {
@Id
@GeneratedValue
var id: Long? = null
}
@Entity
@Table(name = ACCESS_ITEMS_TABLE)
data class AccessLogItem(
@Column(length = 3) val code: String,
@Column(columnDefinition = "text") val path: String,
@Column(length = 10) val verb: String
) {
@Id
@GeneratedValue
var id: Long? = null
}
在这种情况下,例如,我希望 Spring 知道 item 字段不可为空,因此即使没有像我那样指定它,也应该将关系理解为 optional=false。是这样吗?
顺便说一句,@JoinColumn 的nullable = false 也有同样的问题。
【问题讨论】:
标签: spring jpa kotlin spring-data-jpa data-class