2012-05-02 1 views
2

J'ai Entité A avec ID APK ayant deux champs longs, c'est-à-dire les identifiants d'autres entités. J'ai donc trouvé le cache Hibernate manquant lors de l'exécution des actions d'ajout/suppression sur l'entité A et pour éviter cela, je veux utiliser les Entités au lieu de longues.Est-il possible de mapper l'entité hibernate en tant qu'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  
    ...... 
} 

Répondre

1

OUI

@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 Rhus n'a pas résolu cache miss

Questions connexes