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")