Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate Hazelcast二级缓存@MapsId不工作_Hibernate_Jakarta Ee_Jpa 2.0_Hibernate Mapping_Second Level Cache - Fatal编程技术网

Hibernate Hazelcast二级缓存@MapsId不工作

Hibernate Hazelcast二级缓存@MapsId不工作,hibernate,jakarta-ee,jpa-2.0,hibernate-mapping,second-level-cache,Hibernate,Jakarta Ee,Jpa 2.0,Hibernate Mapping,Second Level Cache,我一直在尝试在hibernate hazelcast中缓存一个实体。此实体依赖于另一个实体。我已经用以下方法尝试了映射。第一个缓存在第一个em.find之后,但第二个不缓存 @Entity @Table(name = "config") @org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.READ_WRITE, region = "hibernate-average-config") public class Con

我一直在尝试在hibernate 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;

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

有stacktrace吗?你有什么例外?没有例外。映射很好。第二个代码段对每个em.find(Config.class,id)进行选择查询,这意味着它不会从缓存中读取值,而第一个代码段只进行一次查询,并从缓存中读取值以供以后调用。我认为您的问题可能与我的问题有关。