persistence
persistence copied to clipboard
What should root.getJoins return after a root.get("x")?
I just found out that the following leads to different results in EclipseLink and Hibernate. And I can't decide from looking at the Spec which is the correct behavior:
CriteriaBuilder builder = em.getCriteriaBuilder();
CriteriaQuery<User> query = builder.createQuery(User.class);
Root<User> root = query.from(User.class);
root.get("manager");
// this returns 1 in EclipseLink and 0 in Hibernate.
root.getJoins()
User
is an entity with manager
being a self-reference (I don't think the "self" part is relevant here).
@Entity
public class User {
@Id @GeneratedValue(strategy = GenerationType.AUTO) private Integer id;
@ManyToOne private User manager;
// getters and setters omitted for brevity.
}
Please clarify in the specification and in the TCK which one it should be.
- Issue Imported From: https://github.com/javaee/jpa-spec/issues/169
- Original Issue Raised By:@schauder
- Original Issue Assigned To: Unassigned
Related issue in the EclipseLink issue tracker: https://bugs.eclipse.org/bugs/show_bug.cgi?id=413892
This seems like low-hanging fruit that could be looked at in the next release and resolved one way or the other? I would say this is not that high of a priority either way.
Reza Rahman Jakarta EE Ambassador, Author, Blogger, Speaker
Please note views expressed here are my own as an individual community member and do not reflect the views of my employer.