When having the following entities:
{code:java} @Entity(name = "Post") @Table(name = "post") @org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.TRANSACTIONAL) public static class Post {
@Id private Long id;
private String title;
@Version private int version;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "post", orphanRemoval = true) @org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.TRANSACTIONAL) private List<PostComment> comments = new ArrayList<>();
public Long getId() { return id; }
public void setId(Long id) { this.id = id; }
public String getTitle() { return title; }
public void setTitle(String title) { this.title = title; }
public List<PostComment> getComments() { return comments; }
public void addComment(PostComment comment) { comments.add(comment); comment.setPost(this); } }
@Entity(name = "PostComment") @Table(name = "post_comment") @org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.TRANSACTIONAL) public static class PostComment {
@Id private Long id;
@ManyToOne(fetch = FetchType.LAZY) private Post post;
private String review;
public Long getId() { return id; }
public void setId(Long id) { this.id = id; }
public Post getPost() { return post; }
public void setPost(Post post) { this.post = post; }
public String getReview() { return review; }
public void setReview(String review) { this.review = review; } } {code}
and bootstrapping Hibernate 5.3.2 with `properties.put("hibernate.cache.region.factory_class", "ehcache");` we get the following exception:
{noformat} Caused by: java.lang.UnsupportedOperationException: Cache provider [org.hibernate.cache.ehcache.internal.EhcacheRegionFactory@aaa0f76] does not support `transactional` access at org.hibernate.cache.spi.support.DomainDataRegionTemplate.generateTransactionalNotSupportedException(DomainDataRegionTemplate.java:129) at org.hibernate.cache.spi.support.DomainDataRegionTemplate.generateTransactionalEntityDataAccess(DomainDataRegionTemplate.java:125) at org.hibernate.cache.spi.support.DomainDataRegionTemplate.generateEntityAccess(DomainDataRegionTemplate.java:85) at org.hibernate.cache.spi.support.AbstractDomainDataRegion.lambda$generateEntityDataAccessMap$0(AbstractDomainDataRegion.java:132) at java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1660) at org.hibernate.cache.spi.support.AbstractDomainDataRegion.generateEntityDataAccessMap(AbstractDomainDataRegion.java:130) at org.hibernate.cache.spi.support.AbstractDomainDataRegion.completeInstantiation(AbstractDomainDataRegion.java:73) at org.hibernate.cache.spi.support.DomainDataRegionTemplate.<init>(DomainDataRegionTemplate.java:56) at org.hibernate.cache.spi.support.RegionFactoryTemplate.buildDomainDataRegion(RegionFactoryTemplate.java:32) at org.hibernate.cache.internal.EnabledCaching.prime(EnabledCaching.java:108) at org.hibernate.metamodel.internal.MetamodelImpl.primeSecondLevelCacheRegions(MetamodelImpl.java:304) at org.hibernate.metamodel.internal.MetamodelImpl.initialize(MetamodelImpl.java:133) at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:295) at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:467) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:939) {noformat} This used to work just fine with Hibernate 5.2. |
|