package se.sperber.cryson.examples.advancedcrysondiary.model; import org.hibernate.annotations.CacheConcurrencyStrategy; import org.springframework.security.core.Authentication; import se.sperber.cryson.security.Restrictable; import javax.persistence.*; import java.util.Set; @Entity @org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.READ_WRITE) public class EntryContent extends BaseEntity implements Restrictable { @Lob @Column(length = Integer.MAX_VALUE) private String text; @OneToOne(fetch = FetchType.LAZY, mappedBy = "content", optional = false) @org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.READ_WRITE) private Entry entry; public boolean isReadableBy(Authentication authentication) { return entry == null || entry.isReadableBy(authentication); } public boolean isWritableBy(Authentication authentication) { return entry == null || entry.isWritableBy(authentication); } }