我目前正在用 Spring 構建一個應用程式,我有一個問題:
我想要一個如下所示的物體地址:
@Entity(name = "Address")
@Table(name = "address")
@EntityListeners(AuditingEntityListener.class)
public class Address {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
@Column(name = "city")
private String city;
@Column(name = "country")
private String country;
@Column(name = "postalcode")
private String postalCode;
@Column(name = "state")
private String state;
@Column(name = "street")
private String street;
public Address() {
}
}
我想在多個物體中使用這個地址物體,例如在用戶或訂單物體中。稍后,我希望有許多需要地址的物體。但我不想在地址物體中指定每個關系,否則會變得復雜。是否有可能從用戶到地址的鏈接只在用戶物體中指定這個鏈接?
我的用戶物體如下所示:
@Entity(name = "User")
@Table(name = "User")
@EntityListeners(AuditingEntityListener.class)
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
@Column(name = "username")
private String userName;
@OneToOne(
mappedBy = "address",
orphanRemoval = true,
cascade = {
CascadeType.PERSIST,
CascadeType.REMOVE
}
)
private Address billingAddress;
public User() {
}
}
uj5u.com熱心網友回復:
是的,這是可能的,但您實際上并不需要mappedBy屬性,否則您是在告訴 JPAaddress在關系的另一側搜索屬性(您實際上希望是單向的):
@Entity(name = "User")
@Table(name = "User")
@EntityListeners(AuditingEntityListener.class)
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
@Column(name = "username")
private String userName;
@OneToOne(
orphanRemoval = true,
cascade = { CascadeType.PERSIST, CascadeType.REMOVE }
)
private Address billingAddress;
public User() {
}
}
您可以在以下在線資源中閱讀更多相關資訊:
- https://docs.oracle.com/javaee/6/api/javax/persistence/OneToOne.html
- https://www.baeldung.com/jpa-one-to-one
- https://javabydeveloper.com/one-one-unidirectional-association/
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/379577.html
上一篇:如何使用WebFlux和ReactiveMongoRepository保存元素?
下一篇:避免無限回圈SpringBoot
