查询多个实体时,不会获取Hibernate,OneToOne反向属性

时间:2015-01-12 10:03:16

标签: spring hibernate

反面:

@Entity
@Table(name = "servers")
@org.hibernate.annotations.Entity(dynamicUpdate = true)
public class Server {
  private Plan plan;

  @OneToOne(mappedBy="server")
  public Plan getPlan() { return plan; }
}

业主方:

@Entity
@Table(name = "plans")
@org.hibernate.annotations.Entity(dynamicUpdate = true)
public class Plan {
  Server server;

  @OneToOne(optional=false)
  @JoinColumn(unique=true, nullable=false)
  @Cascade(CascadeType.SAVE_UPDATE)
  public Server getServer() { return server; }
}

现在我在

@Repository public class ServerDao extends org.springframework.orm.hibernate3.support.HibernateDaoSupport {}

当我尝试:

getHibernateTemplate().get(Server.class, 1);

“计划”属性正确加载。但是,当我试图找到多个服务器时:

getHibernateTemplate().find("from Server");

返回服务器列表,每个项目的“plan”属性设置为null。我做错了什么?

弹簧ORM:3.2.2.RELEASE Hivernate 3.5.6-决赛

1 个答案:

答案 0 :(得分:0)

我想到了两个解决方案:

一个。尝试在optional方将false设置为Server

@OneToOne(optional = false, mappedBy="server")
public Plan getPlan() { return plan; }

湾如果您可以更改架构 - 将您的加入列移至Server类。

你看过生成的SELECT查询吗?