Java 冬眠:1-2-1&;如果其中一个参与者只有最终字符串文件(类似无状态),则多2-1相等

Java 冬眠:1-2-1&;如果其中一个参与者只有最终字符串文件(类似无状态),则多2-1相等,java,hibernate,hibernate-mapping,Java,Hibernate,Hibernate Mapping,我拥有的 有两个实体A和BB是过时的,或者说它只有最后的字符串字段是正确的。在A和B之间存在many-2-one关系 我想要什么: 我想保持B无状态。意味着我不想建立many-2-one双向关系并将List字段添加到我的B类中 问题: 如果B是无状态的,那么在它们之间建立one-2-one单向关系是否正确?(指从A到B) 编辑(如何拥有无状态实体): 编辑2(为什么是单向的): 我不能使其双向,因为由于应用程序逻辑,应该只有一个B实体的实例。由于相同的逻辑,B是一个单例,它不能引用单个a实体。如

我拥有的

有两个实体
A
B
B
是过时的,或者说它只有最后的字符串字段是正确的。在
A
B
之间存在
many-2-one
关系

我想要什么:

我想保持
B
无状态。意味着我不想建立
many-2-one
双向关系并将
List
字段添加到我的
B
类中

问题:

如果
B
是无状态的,那么在它们之间建立
one-2-one
单向关系是否正确?(指从
A
B

编辑(如何拥有无状态实体):

编辑2(为什么是单向的):


我不能使其双向,因为由于应用程序逻辑,应该只有一个
B
实体的实例。由于相同的逻辑,
B
是一个单例,它不能引用单个
a
实体。如果有,它应该有对所有
A
实体的引用。但是
B
并不是一般意义上的单身汉。因此,如果它是多对一关系,我应该同步
B
类的每个实体。

为什么不使用从A到B的单向多对一关系呢

@ManyToOne
@JoinColumn(name="TABLE_B_ID")

你怎么会有一个无状态实体?这似乎从根本上是矛盾的,实体被用来保持状态。我为什么需要这样的实体?事实上,这有点像单身汉。在Hibernate中,单例是不可能的(就单例模式而言)。所以我决定将
className
设置为id,由于我的实体是无状态的,所以我有相同的单例。意味着我不能在DB中存储两个特定类的实体,这不是无状态的意思。为了回答您的问题,在这个场景中,您是否应该建立一对一的双向关系,这完全取决于您自己,并且应该从您的数据模型及其预期用途出发。通常,使关系双向化更多的是关于用法,而不是一些抽象的概念推理。Singleton与Took不同,我有一个带有最终状态的
B
实体。建立单向的1-2-1关系是否正确&因为我不能在
B
类中存储任何状态!您可以将级联类型设置为不持久化对B所做的任何更改,除非您明确地持久化该实体I不能持久化。在
B
实体上可能有十几个异步操作,包括将不同的
a
实体链接到相同的
B
实体。因此,如果我有一个双向关系,我必须将
B
的每个实例彼此同步。我不知道我是否理解某些东西,但这就是为什么我说从a到B的单向关系,你没有指定从B到a的关系,所以你的工作只能在a的实体上完成。B仍然没有更改和同步。对不起,你是对的。但是在这种情况下,我需要@OneToOne从
A
B
@ManyToOne
@JoinColumn(name="TABLE_B_ID")