我有2个实体:A和B。
@Entity
@Table(name = "A")
class A{
@Id
private long id;
@OneToMany(mapped by="a")
private Set<B> b;
}
@Entity
@Table(name = "B")
class B{
@Id
private long id;
@ManyToOne
@JoinColumn(name="a")
private A a;
}
当我试图做类似的事情
Query q=sessionFactory.openSession().createQuery("select a.id, bArray
from A as a join a.b as bArray");
我不是B的集合,而是一个B对象。如何获取A类及其相关的B对象?即在调试器中,没有Set with 1元素,只有B元素。
最佳答案
Query q=sessionFactory.openSession().createQuery("select a.id, bArray
from A as a join a.b as bArray");
通过上面的查询,您将仅获得B的一个对象而不是集合,因为基本上该查询只是执行A和B之间的联接,并返回所有可能的元组(从A中选择a,b作为内部联接B,作为b)
您可以设置自定义结果转换器以进行自定义结果处理,例如this
但是无论如何,您都可以使用以下查询中的join fetch来简单地预取“ b”对象和“ a”对象。
Query q=sessionFactory.openSession().createQuery("select a from A as a join fetch a.b ");
关于java - 在 hibernate 中加入数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32308052/