Java 休眠数据缓存:添加时未更新Objet.list
我有两个对象,它们由hibernate缓存,并与manytone关系相关:公司有一个治疗列表 当我在与公司相关的数据库中保存新治疗时,它不会更新治疗的公司列表:当我稍后尝试获取我的公司时,它不包含保存在数据库中的新治疗Java 休眠数据缓存:添加时未更新Objet.list,java,spring,hibernate,spring-data,Java,Spring,Hibernate,Spring Data,我有两个对象,它们由hibernate缓存,并与manytone关系相关:公司有一个治疗列表 当我在与公司相关的数据库中保存新治疗时,它不会更新治疗的公司列表:当我稍后尝试获取我的公司时,它不包含保存在数据库中的新治疗 @Entity @Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) public class Treatment implements Serializable { @ManyToOne(optio
@Entity
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public class Treatment implements Serializable {
@ManyToOne(optional = false)
@NotNull
@JsonIgnoreProperties("treatments")
private Company company;
...
}
@Entity
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public class Company implements Serializable {
@OneToMany(mappedBy = "company", fetch = FetchType.EAGER)
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
private Set<Treatment> treatments = new HashSet<>();
...
}
@实体
@缓存(用法=缓存并发策略。非严格读写)
公共类处理实现可序列化{
@多通(可选=假)
@NotNull
@JsonIgnoreProperties(“治疗”)
私营公司;
...
}
@实体
@缓存(用法=缓存并发策略。非严格读写)
公共类公司实现可序列化{
@OneToMany(mappedBy=“company”,fetch=FetchType.EAGER)
@缓存(用法=缓存并发策略。非严格读写)
私有集处理=新HashSet();
...
}
好的,到目前为止,我发现了一个有效的方法:在保存时,我收回整个缓存
@Override
@CacheEvict(value = "com.bloombooking.app.domain.Company.treatments", allEntries = true)
public Treatment save(Treatment treatment) {
log.debug("Request to save Treatment : {}", treatment);
return treatmentRepository.save(treatment);
}
我找不到从缓存中逐出特定对象的正确方法。如果你有更好的答案,不要犹豫