我会尽量保持这个尽可能简单。我认为它比严格的Hibernate有更多的ORM相关,但是因为我正在开发使用Hibernate,所以我遇到了问题并且需要解决方案。但是,如果这个其他的ORM框架没有这个问题,那么我想知道。ORM /休眠模式:类Foo有很多酒吧,其中一个酒吧是默认的
尝试模式:Foo类有很多酒吧,其中一个酒吧是默认的。
我的实现是Bar表有一个foo_id(onetomany),而Foo表有一个bar_id(表示一个单一的bar,默认情况下,Hibernate在初始化时看起来很酷,但当我尝试检索一个列表对象Foo它抛出一个“键是空的”断言错误和贬低我的会话管理(奇怪它能够得到一个foos就好)。
我可以想象的问题,像休眠ORM工具可能有一些东西,然后在实体中得到同样的东西,那么我该怎么做呢?我总是可以在Bar中设置一个标志,它是默认的,但想象一下,如果我有大量的Bar对象,然后我改变了默认值;我将不得不更新所有这些行。这似乎对我来说是一个糟糕的解决方案。正确的方法来完成这项工作?我知道你们的ORM专家可能有2种或者n种解决方案。
伪代码,希望澄清我试图在下面。
@Table(name="foo")
public class Foo {
protected Collection<Bar> bars = new ArrayList<Bar>();
protected Bar defaultBar = null;
.
.
.
@OneToMany (mappedBy="foo")
public Bar getBars() {
return bars;
}
public void setBars(Collection<Bar> bars) {
this.bars = bars;
}
@OneToOne
@JoinColumn(name="default_bar_id")
public void setDefaultBar(Bar defaultBar) {
this.defaultBar = defaultBar;
}
.
.
.
}