2

私は、他のエンティティの ID である 2 つの長いフィールドを持つ ID APK を持つエンティティ A を持っています。そのため、エンティティ A でアクションの追加/削除を実行しているときに Hibernate キャッシュ ミスが見つかりました。これを回避するには、ロングではなくエンティティを使用します。

@Entity
@AccessType("field")
@Table(name = "A")
@XStreamAlias("A")
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class A {

    @EmbeddedId
    @AttributeOverrides({
            @AttributeOverride(name = "x", column = @Column(name = "X_ID")),
            @AttributeOverride(name = "y", column = @Column(name = "Y_ID"))})
    private APK id;
   ...................
}


@AccessType("field")
@Embeddable
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class APK implements Serializable {
    protected long x= 0;//this is id of another entity
    protected long y= 0;//this is id of another entity    
    ......
}
4

1 に答える 1

1

はい

@Entity
@AccessType("field")
@Table(name = "A")
@XStreamAlias("A")
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class A implements SerializableObject {

    @Id
    @JoinColumn(name = "X_ID", nullable = false)
    @ManyToOne(targetEntity = X.class)
    protected X x;

    @Id
    @JoinColumn(name = "Y_ID", nullable = false)
    @ManyToOne(targetEntity = Y.class)
    protected y;
...........
}

PSbut rhus はキャッシュ ミスを解決しませんでした

于 2012-05-02T11:51:59.893 に答える