gpt4 book ai didi

java - 保留并选择父实体后,子实体为空

转载 作者:行者123 更新时间:2023-12-02 08:08:12 24 4
gpt4 key购买 nike

请帮忙!我已经花了一天的时间,而且我还没有更接近解决这个问题。我的设置如下:

  1. Eclipse 靛蓝
  2. Eclipselink 2.3
  3. Apache Tomcat 6

我正在做的是保留一个与子实体有 @OneToOne 映射的实体。一旦记录进入数据库,我就运行选择并成功选择新插入的记录。但是,子实体为空。

我的目标是仅插入父记录,因为子记录已经在数据库中。

问题:我需要更改什么才能填充子记录?

我有一个坚持的实体:

EntityManager em = getEntityManager();
try {
em.getTransaction().begin();
em.persist(timeSheet);
em.getTransaction().commit();
}

该实体包含@OneToOne:

@Entity
@Cache(expiry=-1)
@Table(name="TIME_SHEET")
public class TimeSheet implements Serializable {
private static final long serialVersionUID = 1L;

@OneToOne(fetch=FetchType.EAGER)
@JoinColumns({
@JoinColumn(name="PROJECT_ID", referencedColumnName="PROJECT_ID", nullable = false, insertable=false, updatable=false),
@JoinColumn(name="COMPANY_ID", referencedColumnName="COMPANY_ID", nullable = false, insertable=false, updatable=false)
})
private Project project;
public Project getProject() {
return project;
}

子实体是:

@Entity
@Cache(expiry=-1)
@Table(name="PROJECT")
public class Project implements Serializable {
private static final long serialVersionUID = 1L;

@EmbeddedId
private ProjectPK id;

保留并选择“TimeSheet”后,“Project”为空。我应该怎么做才能确保填充“项目”?

谢谢!

最佳答案

嗯,在所示的代码中,您保留了一个 TimeSheet,而没有首先在其中设置一个项目,那么为什么您希望在加载它时它有一个项目呢?您永远不应期望对象模型在加载后与保存前看起来有所不同。如果它看起来确实不同,那么就有问题了。

关于java - 保留并选择父实体后,子实体为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7831311/

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