You are right, what it comes to specification A is definitely wrong answer.
Specific implementations of specification are still aloud to update value of @Version when JPQL bulk update is done. How certain implementation behaves is hopefully documented. When not, following can be used to check does bulk update affect version:
@Entity
public class SomeEntity {
@Id private int id;
private String someValue;
@Version private int version;
//getters, setters
}
//creating entity
tx.begin();
SomeEntity se = new SomeEntity();
se.setId(1);
em.persist(se);
tx.commit();
String versionJpql = "SELECT se.version FROM SomeEntity se WHERE se.id = 1";
//original version
Integer version = em.createQuery(versionJpql,Integer.class).getSingleResult();
//bulk update
tx.begin();
em.createQuery(
"UPDATE SomeEntity se SET se.someValue='some' WHERE se.id = 1"
).executeUpdate();
tx.commit();
Integer versionAfterUpdate = em.createQuery(versionJpql, Integer.class)
.getSingleResult();
//has version been changed:
assertEquals(version, versionAfterUpdate);