2012-05-02 103 views
2

我有ID APK的實體A有兩個長字段,即其他實體的ID。所以我發現Hibernate緩存未命中,而在實體A上執行動作添加/刪除操作,並且爲了避免這種情況,我想使用實體而不是長時間。是否可以將hibernate實體映射爲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

@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漆樹沒有解決高速緩存未命中

相關問題