The bug in com.mysema.query.DefaultQueryMetadata.equals

getJoins() isn't equals joins, so getJoins() { addLastJoin(); /* add joinTarget to joins */  return joins; }, and object.equals(object.clone()) can be false