Вы полностью правы во всех своих оценках. Вы получите это.
Для вашего первого вопроса, если я правильно назову, save
специально вставляет. Поэтому вызов save снова приведет к другой строке в db.
Для вашего второго вопроса update
обновляет объект в сеансе. Поэтому, если объект находится в сеансе, он будет обновляться. Если объект не находится в сеансе, вы должны вызвать слияние. Я считаю, что вызов update
для отдельного экземпляра приведет к исключению.
Параметры, передаваемые методу с аннотацией @Query
, должны использоваться в запросе, в вашем примере это должно выглядеть примерно так:
@Query(value = "SELECT c FROM Child c where c.parent.id =:id")
public List<Child> findChildById(@Param("id") String id);