如何使用级联为多个@OneToOne关系建模?

时间:2019-11-29 13:44:42

标签: java spring hibernate jpa kotlin

我有这种模式,其中一家公司有一位联系人和一位董事。目前,我对公司有一些了解。但是根据此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() {

0 个答案:

没有答案