Это join для любых объектов. Он просто склеивает и ничего не знает. Если фиксированное число колонок, то надо писать у объекта колонки правильный непустой toString()