I need some help with generic types in the JPA 2.1 API, specifically with regard to the new Join#on and Fetch#on methods. We ultimately unify those 2 interface hierarchies into a single hierarchy in out code using org.hibernate.ejb.criteria.JoinImplementor which extends from both Join and Fetch.
The problem I am facing is in the return types. So, Join defines: public interface Join<Z,X> { public Join<Z,X> on(...); ... } Fetch defines: public interface Fetch<Z,X> { public Fetch<Z,X> on(...); ... } public interface JoinImplementor<Z,X> extends Join<Z,X>, Fetch<Z,X>, FromImplementor<Z,X> { ... } The compiler does not at all like JoinImplementor as is, so I have to override the method: public interface JoinImplementor<Z,X> extends Join<Z,X>, Fetch<Z,X>, FromImplementor<Z,X> { public JoinImplementor<Z,X> on(...); ... } which should be fine as it is simple return type clarification. And actually that definition compiles fine. However, JPA also defines a whole hierarchy from Join such as. CollectionJoin, ListJoin, etc. So Hibernate has for example: public interface CollectionJoinImplementor<Z,X> extends JoinImplementor<Z,X>, CollectionJoin<Z,X> { @Override public CollectionJoinImplementor<Z, X> on(...); ... } The IDE is fine with this type signature, however trying to compile this leads to the following error: types org.hibernate.ejb.criteria.JoinImplementor<Z,X> and org.hibernate.ejb.criteria.JoinImplementor<Z,X> are incompatible; both define on(javax.persistence.criteria.Predicate[]), but with unrelated return types I have no idea what I need to do here. Can anyone see the solution? -- st...@hibernate.org http://hibernate.org _______________________________________________ hibernate-dev mailing list hibernate-dev@lists.jboss.org https://lists.jboss.org/mailman/listinfo/hibernate-dev