2012-10-18 80 views
2

我如何在eclipselink中做一个简单的连接查询?我想收到ArrayList; 例如,我有两个实体:Eclipse链接简单连接

public class A implements Serializable { 

@Id 
@GeneratedValue(strategy = GenerationType.IDENTITY) 
@Basic(optional = false) 
@Column(name = "id") 
private Long id; 
@Column(name = "value") 
private String value; 

@OneToMany(mappedBy = "aid") 
private Collection<B> bCollection; 

}

public class B implements Serializable { 

@Id 
@GeneratedValue(strategy = GenerationType.IDENTITY) 
@Basic(optional = false) 
@Column(name = "id") 
private Long id; 

@JoinColumn(name = "a_id", referencedColumnName = "id") 
@ManyToOne 
private A aid; 

}

我想是这样执行的查询:

Select * From A a Join B b ON a.id = b.a_id Where a.value = '1'; 

我这样做:

EntityManager em = createEntityManager(); 
Query q = em.createQuery("Select a From A a Where a.value = 1"); 
q.setHint("eclipselink.join-fetch", "a.bCollection"); 
Object result = q.getResultList(); 

而且我收到一个对象,它有一个链接到B对象(bCollection),它在A对象上有一个链接(aid),并且是无限期的。这是正常的吗?

回答

1

是的。在bidirectional mapping父指孩子和孩子指父母,其正常。但是如果你无法无限地访问圆形图,那你就很好。