2012-05-02 9 views
2

私は、2つの長いフィールド、つまり他のエンティティのIDを持つID APKのエンティティAを持っています。だから、私はHibernateのキャッシュミスを発見し、アクションを追加/削除してエンティティAを削除し、これを避けるために、長いものの代わりにエンティティを使いたいと思っています。IDとしてハイバネートエンティティをマップすることは可能ですか?

@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  
    ...... 
} 

答えて

1

YES

@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; 
........... 
} 

P.S.butのウルシは、キャッシュミス

を解決しませんでした
関連する問題