2010-10-14 3 views

ответ

0

В настоящее время db4o не поддерживает UniqueConstrain в нескольких полях. Вы можете устанавливать уникальные ограничения только по полю, но не комбинировать их.

@Ladlestein Ну, это хорошо, но это не работает. db4o управляет объектами с помощью ссылочной идентичности. Когда вы применяете уникальное ограничение на Foo.name, вы гарантируете, что ссылка уникальна. Таким образом, никакой другой объект не может иметь одинаковую ссылку на объект имени. Но вам неинтересно, что ссылка уникальна, но вы хотите иметь уникальное содержание имен.

+0

Я еще не испытал это, но спасибо за ваш опыт. – 2010-10-16 12:21:18

0

Походит составной ключ. Можете ли вы создать новый класс, который содержит поля, определяющие ключ, и использовать переменную-член с этим типом вместо полей, основанных на ключах, в вашем исходном классе?

т.е. где вы были

class Foo { 
    String given_name; 
    String family_name; 
} 

использовать вместо

class Name { 
    String given_name; 
    String family_name; 
} 

class Foo { 
    Name name; 
} 

и сделать Foo.name уникальное поле?

+0

Ах, я думал об этом, но завершение этой мысли ускользнуло от меня. Это будет работать, я надеялся использовать аннотацию, охватывающую несколько полей. – 2010-10-14 23:12:57

Смежные вопросы