2015-05-07 18 views
7

Toplink może używać odwzorowań tylko do odczytu, gdy wiele atrybutów w mapie obiektów ma te same pola w bazie danych, ale tylko jedno z mapowań może zapisywać dane w polu.JPA readonly mapping

Czy WZP ma taką funkcję, jak pisać adnotacje? Mam jedną adnotację @ManyToOne i jedną @Column, które muszą być odwzorowane na to samo pole w bazie danych.

 

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

Odpowiedz

13

Od here

Element adnotacja Kolumna i XML definiuje wkładane i możliwych do zaktualizowania opcji. Pozwalają one na pominięcie tej kolumny lub klucza obcego w instrukcji SQL INSERT lub UPDATE. Można ich użyć, jeśli ograniczenia na tabeli uniemożliwiają operacje wstawiania lub aktualizacji. Można ich również użyć, jeśli wiele atrybutów jest mapowanych do tej samej kolumny bazy danych, na przykład z polem klucza obcego za pomocą mapowania ManyToOne i Id lub Basic. Ustawienie opcji wstawiania i aktualizowania na wartość false powoduje, że atrybut jest oznaczany jako tylko do odczytu.

Więc

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

powinien to zrobić