2015-05-07 15 views
7

Toplink può utilizzare mapping di sola lettura quando più attributi in un oggetto si associano agli stessi campi nel database ma solo uno dei mapping può scrivere sul campo.JPA mappatura in lettura

JPA dispone di tale funzionalità, come scrivere annotazioni? Ho una @ManyToOne e una annotazione @Column che devono essere mappate nello stesso campo nel database.

 

    @ManyToOne(optional=false, fetch=FetchType.LAZY) 
    @JoinColumn(name="USR_ID", referencedColumnName="USER_ID", nullable=false) 
    private User user; 

    /** @generated **/ 
    @Column(name="USER_ID", nullable=false, length=30) 
    private String userId; 

risposta

13

Da here

L'elemento annotation Colonna e XML definisce le opzioni inseribili e aggiornabili. Questi consentono a questa colonna o al campo della chiave esterna di essere omessi dall'istruzione SQL INSERT o UPDATE. Questi possono essere utilizzati se i vincoli sulla tabella impediscono operazioni di inserimento o aggiornamento. Possono anche essere utilizzati se più attributi si associano alla stessa colonna del database, ad esempio con un campo chiave esterna tramite un mapping ManyToOne e Id o Basic. Impostando sia insertable che updatable su false, contrassegna effettivamente l'attributo come di sola lettura.

Così

@Column(name="USER_ID", nullable=false, length=30, 
     updatable=false, insertable=false) 
    private String userId; 

dovrebbe farlo

Problemi correlati