我有这种模式,其中一家公司有一位联系人和一位董事。目前,我对公司有一些了解。但是根据此answer,这是一种代码异味,并且级联应该在父级上,在“联系人”和“用户”上。我尝试将层叠属性放在父级上,但无法使用Spring CrudRepository保存实体。这是有效的模型还是真的有代码味道?
@Entity
@Table(name = "contacts")
class Contact(
var name: String = "",
var residence: String = "",
var phone: String = "",
var email: String = "",
@OneToOne(mappedBy = "contact")
var company: Company? = null
) : BaseEntity() {
@Entity
@Table(name = "users")
class User(
var email: String = "",
var fullName: String = "",
@OneToOne(mappedBy = "director")
var company: Company? = null
) : BaseEntity() {
@Entity
@Table(name = "companies")
class Company(
val companyCode: String = "",
@OneToOne(cascade = [CascadeType.ALL], optional = false)
var director: User? = null,
@OneToOne(cascade = [CascadeType.ALL], optional = false)
var contact: Contact? = null
) : BaseEntity() {