Hibernate 2nd level cache with Redis shared amongst multiple JVMS

@beikov. Shared second level cache is behaving as not expected in some scenario.

My set up is:

Multiple instances of same java application are running with shared redis 2nd level cache.
There are 2 entites Employee with one to many with Items:

@Data
@Entity
@Cache(region = "employeeCache", usage = CacheConcurrencyStrategy.READ_WRITE)
public class Employee {
	@Id
	private Long id;
	private String firstName;
	
	@OneToMany(cascade=CascadeType.ALL, fetch = FetchType.EAGER)
    @JoinColumn(name="employee_id")
	@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
	private Set<Items> items;

.....
}

I want both the entities to be in cache so added @Cache in the relationship.
Now somehow Items table is update in background so i refresh the cache by calling below code in one of the instances of java applications.:

entityManagerFactory.getCache().evict(Items.class, id);
entityManagerFactory.getCache().evict(Employee.class, id);

Now when find the Employee using employeeRepository.findById(id) in the same java instance i get the correct data.

But when i find the same employee object in other java instance it fails with exception that item with id(which was removed) is not found.

How this can be tackled. There are multiple instances of the microservice sharing same cache. If one instance changes anything other doesn’t cope up.