2015-05-26 8 views
13

,JPA - @Column (unique = true) - 'Benzersiz' özelliğe sahip olmanın esas noktası nedir? Ben nesne ile ve benzersiz = true 'tanımlı olmadan 'adını' çoğaltmak zorunda kaydetmek çalıştığınızda

@Entity 
@Table(name="subject") 
public class SubjectDO { 
    @Id 
    @Column(name="id") 
    int id; 

    @Column(name="name", unique=true) 
    String name; 
    ... 
    // Getter-Setter methods 
} 

, 'özne' tablo

CREATE TABLE subject (id int PRIMARY KEY, name VARCHAR(255) **UNIQUE**) 

ve ilgili Mapped Nesne ben yaşıyorum varsayalım Benzer davranışı alıyorum (aynı istisna). Ve JPA uygulamasının gerçekten kontrol için DB'ye ulaşmadıkça hiçbir şey yapamayacağı açıktır.

Gerçek kullanım durumu nedir?

(Ben eşsiz sınırlaması çok Veritabanı düzeyinde tanımlanır, burada varsayıyorum.) @Column içinde

cevap

29

unique sadece kullanılır izin verirsen JPA sağlayıcı sizin için veritabanı oluşturmak - bu benzersiz kısıtlamayı yaratacak belirtilen sütun. Ancak veritabanına zaten sahipseniz veya bir kez oluşturduysanız, unique'un herhangi bir etkisi yoktur. column ek açıklamada

+0

teşekkür olur! Çalışma zamanı boyunca alaka düzeyini bulmaya çalışıyordum. DDL'ye özgü ek açıklamalar hakkında özetleyen herhangi bir çevrimiçi kaynağa sahibiz mi? Onu aramayı denedim ama bulamadım .. –

+0

[JPA Spesifikasyonu] 'nda bölüm 11.2'ye bakın (http://download.oracle.com/otndocs/jcp/persistence-2_1-edr2-spec/index.html), şema oluşturma sürecinde gözlenen tüm ek açıklamaları ve niteliklerini listeler. –

+0

Bu yardımcı olur .. Teşekkürler! –

9

unique=true sadece DDL generation kullanılacak, bu runtime sırasında herhangi bir etkisi yoktur, gerçek benzersizliği çekler database