Actualizar la versión de hibernación manualmente

Tengo dos clases que dicen que Foo y Bar se asignaron como @OneToOne (bidireccional) usando Hibernate (3.6.1 final) con JPA (2.0) como -

@Entity
public class Foo{
    @Id
    private Long id;

    @OneToOne(cascade = CascadeType.ALL, mappedBy = "foo")
    private Bar bar;

    @OneToOne(cascade = CascadeType.ALL, mappedBy = "foo")
    private Qux qux;

    @Version
    private int version;

    // getters and setters omitted
}

@Entity
public class Bar{
    @Id
    private Long id;

    @OneToOne
        @JoinColumn(name = "foo_id",  nullable = false)
    private Foo foo;

    // getters and setters omitted
}

@Entity
public class Qux {
    @Id
    private Long id;

    @OneToOne
        @JoinColumn(name = "foo_id",  nullable = false)
    private Foo foo;

    // getters and setters omitted
}

ota: Bar and Qux no tiene@Version columna

Si actualizamos Bar, hibernate no incrementará la versión de Foo y lo mismo para Qux. Pero nuestra lógica de negocios necesita: si alguien actualiza Bar en el Foo y otro hilo está tratando de actualizar el Qux del mismo Foo pero no tiene Bar actualizado y viceversa, entonces dichas actualizaciones deberían fallar.
Dado que hibernate no actualiza la propiedad de versión de Foo si actualizamos la barra, decidimos actualizar la versión de Foo manualmente (sé que es bastante extraño y no recomendado) si actualizamos la barra y Qux.
Funciona perfectamente bien ... pero me preocupan algunos casos de esquina en concurrencia que pueden fallar esto o tener un comportamiento no deseado.
¿Es seguro hacer este tipo de ajustes con la versión para este propósito? O ¿hay alguna otra alternativa mejor para esto (ya he intentado aumentar la fuerza optimista / pesimista)

Respuestas a la pregunta(1)

Su respuesta a la pregunta