Как я уже писал в комментарии, у вас циклическая зависимость между Pet и Client. Выхода два - или убрать зависимость, или определить владельца связи, чтобы Hibernate мог правильно определить правило десириализации. Сделать это можно либо описав в xml правило мапинга и определив параметр inverse:
<hibernate-mapping>
<class name="ru.misha.model.Client" table="clients" ...>
...
<set name="pets" table="clients_pets" fetch="select" inverse="true">
<key>
<column name="client_id" not-null="true" />
</key>
<one-to-many class="ru.misha.model.Pet" />
</set>
...
</class>
...
</hibernate-mapping>
либо определить направление связи анотациями
@Entity
@Table(name = "clients")
public class Client extends Base {
@OneToMany(mappedBy="client")
@Column(name="clientId")
private Set<Pet> pets;
}
Как-то так. Не копируйте бездумно, так как пишу по памяти и могу ошибаться в деталях. Почитайте документацию по Hibernate в заданом направлении.