对于上下文,客户端我使用 MVP 模式,所以带有One
列表的视图只知道 ID,当我Many
在服务器上收到我的新的时,我希望能够只更新One
的外键,使用“setOneId”或One
ID 设置为所需值的空对象。
所以我尝试在 DataNucleus 中创建一个多对一的单向,我有点挣扎。我可以使用 JDO 或 JPA,我真的不在乎。在 JPA 中,我尝试了这个:
@Entity
public class Many {
@Id
String id;
@ManyToOne
@Join(name = "idOne")
One one;
}
@Entity
public class One {
@Id
String id;
}
这几乎是我想要的。创建了一对多但使用连接表。我想有一个直接的关系。当我插入/更新 a 时Many
,我不想插入/更新相关的One
,只需在我的对象idOne
中使用好的 id更新。Many
我找到了这篇博文,但它与 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;
}
我试过了,但我得到了这个错误。
我不明白我是如何挣扎的。我的目标是有一个表来保存一些参考数据(如国家列表作为类),以及我创建/更新而不创建/更新参考One
的“工作项目”列表(如城镇作为类)Many
数据,只是它在Many
对象中的外键。