Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何用cascade建模多个@OneToOne关系?_Java_Spring_Hibernate_Jpa_Kotlin - Fatal编程技术网

Java 如何用cascade建模多个@OneToOne关系?

Java 如何用cascade建模多个@OneToOne关系?,java,spring,hibernate,jpa,kotlin,Java,Spring,Hibernate,Jpa,Kotlin,我有这种模式,一家公司有一个联系人和一个董事。我现在有公司的情况。但根据这一点,这是一种代码气味,级联应该在家长、联系人和用户身上进行。我尝试将cascade属性放在父对象上,但无法使用springcrudepository保存实体。这是一个有效的模型还是一种真正的代码味道 @Entity @Table(name = "contacts") class Contact( var name: String = "", var residence: String =

我有这种模式,一家公司有一个联系人和一个董事。我现在有公司的情况。但根据这一点,这是一种代码气味,级联应该在家长、联系人和用户身上进行。我尝试将cascade属性放在父对象上,但无法使用springcrudepository保存实体。这是一个有效的模型还是一种真正的代码味道

@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() {

这是一个功能问题,而不是一个技术问题。思考在应用程序中应该做什么。首先,一个用户只能是一家公司的董事,这是否正常?如果不是,它就不应该是一个单间。联系人也一样:整个公司只有一个联系人是正常的吗?现在,当你创建一家公司时,你会使用一个现有用户作为其董事,还是会使用与创建该公司相同的操作创建一个新用户?如果你删除一家公司,其董事是否会在同一时间去世并从你的应用程序中消失,或者只是留在那里,作为一个不再是任何公司董事的用户?除非某个实体是母公司不可分割的一部分,否则一开始就没有级联。是的,董事和联系信息与公司有关。如果我删除了董事,我应该删除公司的信息。如果我删除公司,董事也应该被删除。然后你可以在协会的两边设置级联删除。就像我现在所做的那样?或者我应该把公司的属性放在一起,虽然我试过了,但我无法维持这种关系。在我试图为一家公司保存新创建的董事后,我遇到了一个错误。