在WHERE语句中使用未在Hibernate中映射的列?

时间:2014-04-13 03:58:53

标签: java mysql hibernate

我有两个表,foobar。在foo中,我有barId引用bar.id。这是Foo的映射类:

@Entity
@Table(name = "foo")
public class Foo
{
  @Id
  public long id;

  @OneToOne
  @JoinColumn(name = "barId", referencedColumnName = "id")
  public Bar bar;

  //snip...
}

这是Bar

的映射
@Entity
@Table(name = "bar")
public class Bar
{
  @Id
  public long id;

  //snip...
}

我的问题是,如果我想要检索Foo为5的所有barId,我可以这样做吗?

String sql = "from Foo where barId = :barId";

或者我应该这样做:

String sql = "from Foo where bar = :bar";

(在这种情况下,将Bar的实际实例设置为参数:bar

第一种方法是否有效,或者我是否需要使用第二种方法?

1 个答案:

答案 0 :(得分:1)

你可以这样做:

String sql = "from Foo where bar.id = :barId";