gpt4 book ai didi

java - DataNucleus 中的多对一单向关系

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

对于上下文,客户端我使用 MVP 模式,因此具有 One 列表的 View 仅知道 ID,并且当我的新 Many 收到时服务器,我希望能够使用“setOneId”或 ID 设置为所需值的空 One 对象来更新 One 的外键.

所以我尝试在 DataNucleus 中创建多对一单向,但我有点挣扎。我可以使用 JDO 或 JPA,我并不关心。在 JPA 中,我尝试了以下方法:

@Entity
public class Many {
@Id
String id;

@ManyToOne
@Join(name = "idOne")
One one;
}

@Entity
public class One {
@Id
String id;
}

这几乎就是我想要的。创建一对多,但使用连接表。我想有直接的关系。当我插入/更新一个Many时,我不想插入/更新相关的One,只需用good更新idOne我的 Many 对象中的 id。

我找到了这个blogpost ,但它是使用 Hibernate 的,我认为它仍然使用连接表:

@Entity
public class Many {
@Id
public String id;

@Column(name="idOne")
private String idOne;

@ManyToOne
@JoinColumn(name="idOne", nullable=false, insertable=false, updatable=false)
private One one;
}

我试过了,但我得到的是 this error .

我不明白我是如何挣扎的。我的目标是有一个表来保存一些引用数据(例如作为 One 类的国家/地区列表)和“工作项目”列表(例如作为 Many 类的城镇) ),我创建/更新时无需创建/更新引用数据,仅创建/更新 Many 对象中的外键。

最佳答案

如果它是单向关联,并且 Many 是拥有方(按照您的第二个示例),那么您就走错了方向。将更新和插入责任委派给单向关系的拥有方没有多大意义(如使用 insertable=false 和 updateable=false 所做的那样)。

编辑:更新答案所以你想要的是多对一,在拥有方有一个外键列。试试这个

@Entity
public class Many {
@Id
String id;

@ManyToOne
@JoinColumn(name = "foreignKeyColumn")
One one;
}

关于java - DataNucleus 中的多对一单向关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13287726/

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