gpt4 book ai didi

java - JPA ManyToOne 字段未存储

转载 作者:行者123 更新时间:2023-11-30 03:43:39 26 4
gpt4 key购买 nike

我有一个如下所示的 bean 结构。我面临的问题是,在尝试保留 XBean 时,我能够保存所有数据(即 xName、pBean、qBean、rBean、kBean 在存储中都可见),但没有 Y_BEAN 的条目。

我对 JPA 注释还很陌生,所以不确定我所做的是否正确。这个想法是通过一个 YBean 实例拥有多个 XBean 条目(即作为列表)

XBean 还将保存 YBean 的实例作为其父级,因此当我检索 XBean 时,我应该获取所有数据。 @ManyToOne 注解有问题吗?

@Entity
@Table (name = "X_BEAN")
public class XBean implements XInterface {

private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Key key;

private String xName;

@OneToOne(cascade=CascadeType.ALL)
private PBean pBean;

@ManyToOne
@JoinColumn(name="y_id")
private YBean yBean;

@OneToOne(cascade=CascadeType.ALL)
private qBean qBean;

@OneToOne(cascade=CascadeType.ALL)
private RBean rBean;

@OneToMany (mappedBy="xBean", cascade=CascadeType.ALL)
private List<KBean> kBeans;

// getter setters for each are below ...
}

YBean的结构如下

@Entity
@Table (name = "Y_BEAN")
public class YBean implements XInterface {

private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Key key;

@OneToOne(cascade=CascadeType.ALL)
private ZBean zName;

@OneToOne(cascade=CascadeType.ALL)
private PBean pBean;

@OneToOne(cascade=CascadeType.ALL)
private RBean rBean;

@OneToMany (mappedBy="yBean", cascade=CascadeType.ALL)
private List<XBean> xBeans;

// getter setter for each are below ...
}

我正在使用 Google App Engine 的存储空间

最佳答案

您需要cascade=CascadeType.PERSIST在您的ManyToOne上,告诉 Hibernate 在持久化 XBean 时也持久化 YBean。

您还应该考虑是否需要反向 OneToMany 上的级联属性。与CascadeType.ALL ,如果您要删除 YBean 的实例,Hibernate 将删除所有关联的 XBean(其中可能有零个、一个或多个),因为 CascadeType.ALL表示“将持久性操作(包括删除)应用于可通过此属性或集合访问的任何其他实体”。如果您没有CascadeType.ALL并且您删除了一个或多个 XBean 引用的 YBean,那么这些 XBean 现在将引用一个不存在的 YBean ID,因此在这种情况下您可能需要进行一些清理。

如果您的业务逻辑从不删除 YBean,直到它没有被任何 XBean 引用,那么这两个选项都是无关紧要的,但是如果您的业务逻辑不能阻止这种情况,那么您应该根据是否想要获得级联摆脱 XBean,或者您是否想要清理它们(但不是删除它们)以不再引用正在删除的 YBean。

关于java - JPA ManyToOne 字段未存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26264414/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com