2014-07-09 9 views

cevap

5

mümkündür kullanarak İçiçe :: i1 ve İçiçe :: i2 (kombinasyon) bir çift olarak benzersiz olduğundan emin olmak gerekir:

@Entity 
@Table(uniqueConstraints = { @UniqueConstraint(columnNames = {"i1", "i2"})}) 
public class Widget { 

Olurdu

create table Widget 
( id int8 not null, 
    i1 int8, 
    i2 int8 , 
    primary key (id), 
    unique (i1, i2) 
) 

İsteğe CREATE SQL (postgresql örnek) neden - bu muhtemelen daha consise olacağını ve Eğer tek bir dosyada @AttributeOverride açıklama specyfying eklerken okunabilir - her ikisi için sütun adları

@AttributeOverrides({ 
     @AttributeOverride(name = "i1", column = @Column(name = "i1")), 
     @AttributeOverride(name = "i2", column = @Column(name = "i2")) 
}) 
@Embedded 
Nested nested; 
+0

thnaks niteliklerini, bu harika. Bir şey beni çok endişelendiriyor, eğer 'Nested' alan adları değişirse, onu gömülü olarak kullanan herhangi bir sınıfta problemler var ... bu problemi çözmek için herhangi bir model var mı? –

+0

@JoshuaMN maalesef bunun için bir model yok, ancak 'Nested' sınıfının alanlarının adlarını değiştirmesi ihtimali, gömülü sınıfların kullanımı için oldukça küçük bir amaçtır. Bu durumda, '@ AttributeOverride' fikrini de bırakabilirsiniz. Bu durumda hiçbir şey ifade etmemektedir (sadece kodun daha fazla kullanıldığını düşünüyorum). –

İlgili konular