The behaviour you are describing is exactly how ReindexOnUpdate.SHALLOW should behave (see ReindexOnUpdate.SHALLOW).
To get the index of ObjectA to be updated when you only changed an ObjectB you would need to remove the @IndexingDependency(reindexOnUpdate = ReindexOnUpdate.SHALLOW).
If, after you do that, you’ll get an exception like "Unable to find the inverse side of the association on type … ". You’ll have to specify the inverse side of the relation in ObjectB:
public class ObjectB {
// ...
@OneToMany(mappedBy="objectB")
private Set<ObjectA> objectAs;
}
Hard to say without knowing your data… if a single objectB is linked to a million of objectAs and you have frequent updates to objectB then yes…
Depending on your business needs you may be able to leave the model as it was, and do consider updating the index in some time-intervals, for that see this section on using indexing plans.