繁体   English   中英

指定单向 @OneToOne JPA 映射的所有者

[英]Specifying the owner of a unidirectional @OneToOne JPA mapping

我在CustomerShippingAddress之间建立了一对一的关系。 我想确保如果删除了CustomerShippingAddress也被删除,因此我想将customer的键存储在shipping_address表中。 我只需要从客户导航到地址,即关系不需要是双向的。

根据这个 JPA 指南,关系应该像这样映射:

@Entity
public class Customer{

    @OneToOne
    private ShippingAddress shippingAddress;
}

但是,这将导致shipping_address的键存储在customer 我对此的反对意见是,它会允许某人将一行插入到shipping_address而无需将其与customer相关联。 同样,它允许某人在不删除相关地址的情况下延迟customer的一行。

是否可以创建单向一对一映射,其中

  • 您可以从父(客户)导航到子(送货地址)
  • 父表的键存储在子表中

尝试这个:

    @Entity
    public class Customer {
        @Id    
        private long id;

        @OneToOne(mappedBy="customer")
        private ShippingAddress shippingAddress;

        //...
    }

    @Entity
    public class ShippingAddress {
        @Id    
        private long id;

        @OneToOne
        @JoinColumn(name = "customer_id", referencedColumnName = "id")
        private Customer customer;

        //...
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM