带有@MapsId的Hibernate Hazelcast二级缓存不起作用

时间:2019-12-17 07:18:57

标签: hibernate java-ee jpa-2.0 hibernate-mapping second-level-cache

我一直试图在休眠hazelcast中缓存实体。该实体依赖于另一个实体。我已经尝试通过以下方式进行映射。第一个缓存在第一个em.find之后,而第二个缓存不缓存。

@Entity
@Table(name = "config")
@org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.READ_WRITE, region = "hibernate-average-config")
public class Config implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(generator = "foreignIdGenerator")
    @GenericGenerator(
            name = "foreignIdGenerator", strategy = "foreign",
            parameters = @Parameter(name = "property", value = "provider"))
    private int id;

    @Fetch(SELECT)
    @OneToOne(optional = false)
    @JoinColumn(name = "prov_id", nullable = false, updatable = false, unique = true)
    private Provider provider;

以上代码段有效,但以下代码无效

@Entity
@Table(name = "config")
@org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.READ_WRITE, region = "hibernate-average-config")
public class Config implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @MapsId
    @Fetch(SELECT)
    @OneToOne(optional = false)
    @JoinColumn(name = "prov_id", unique = true, nullable = false, updatable = false)
    private Provider provider;

为什么会这样?有没有办法在第二个缓存器上有有效的缓存,这样我就不必在表中保留重复的列。

0 个答案:

没有答案