/** * INTERNAL: * Clone the query */ public Object clone() { ObjectLevelReadQuery cloneQuery = (ObjectLevelReadQuery)super.clone(); // Must also clone the joined expressions as always joined attribute will be added // don't use setters as this will trigger unprepare. if (cloneQuery.hasJoining()) { cloneQuery.joinedAttributeManager = (JoinedAttributeManager)cloneQuery.getJoinedAttributeManager().clone(); cloneQuery.joinedAttributeManager.setBaseQuery(cloneQuery); } if (hasNonFetchJoinedAttributeExpressions()){ cloneQuery.setNonFetchJoinAttributeExpressions(new ArrayList<Expression>(this.nonFetchJoinAttributeExpressions)); } // Don't use setters as that will trigger unprepare if (hasOrderByExpressions()) { cloneQuery.orderByExpressions = new ArrayList<Expression>(getOrderByExpressions()); } return cloneQuery; }