JPA сохранить список объектов таблицы с составным первичным ключом - PullRequest
0 голосов
/ 07 октября 2011

Мне нужно сохранить список объектов таблицы с составным первичным ключом, я делаю, как показано ниже. Но я получаю ошибку, вызванную: java.sql.BatchUpdateException: ORA-00001: уникальное ограничение нарушено. Но пункты в списке уникальны, что я делаю не так.

// Структура таблицы

@Entity
   @Table(name="COMP_PRIMARY")
   CompPrimaryObj{
   @Id
   @Column(name="KEY1")
   private String key1;

   @Id
  @Column(name="KEY2")
  private Long key2;
   }

// код в моем слое обслуживания

List<CompPrimaryObj> compPrimaryObjList = new ArrayList<CompPrimaryObj>();
CompPrimaryObj obj1 = new CompPrimaryObj();
obj1.setKey1("key1");
obj1.setKey2(11111);
compPrimaryObjList.add(obj1);
CompPrimaryObj obj2 = new CompPrimaryObj();
obj2.setKey1("key2");
obj2.setKey2(222222);
compPrimaryObjList.add(obj2);
for(CompPrimaryObj compPrimaryObj:compPrimaryObjList){
   em.persist(compPrimaryObj);  // em stands for Entity manger instance
}

Ответы [ 2 ]

1 голос
/ 07 октября 2011

При работе с составным первичным ключом у вас есть два варианта.В каждом из них вы должны создать новый класс для хранения полей, представляющих PK:

Составной первичный ключ:

@Entity 
@Table(name="COMP_PRIMARY")
@IdClass(CompPrimaryObjId.class)
public class CompPrimaryObj {
    @Id 
    @Column(name="KEY1")
    String key1;
    @Id 
    @Column(name="KEY2")
    Long key2;
    //...
}
public class CompPrimaryObjId{
    String key1;
    Long key2;
}

Или со встроенными первичными ключами:

@Embeddable
public class CompPrimaryObjId {       
    @Column(name="KEY1")
    private String key1;
    @Column(name="KEY2")
    private Long key2;
    // ...
   }
}

@Entity
@Table(name="COMP_PRIMARY")
public class CompPrimaryObj {
     @EmbeddedId
     private CompPrimaryObjId id;
     //....
}
0 голосов
/ 07 октября 2011

Недавно я сопоставил @Many-To-Many с составными первичными ключами. Посмотрите на этот пост, я думаю, что он может дать вам всю необходимую информацию.

Отображение ManyToMany с составным первичным ключом и аннотацией:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...