jpa один-ко-многим постоянным детям с его ID - PullRequest
0 голосов
/ 27 января 2010

@ Entity публичный класс Item {

 @Id
 @GeneratedValue(strategy = GenerationType.AUTO)
 @Column
 private Long id;
    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "item")
 private List<Feature> features= new ArrayList<Feature>();

Детская организация:

public class Feature{
 @Id
 @GeneratedValue(strategy = GenerationType.AUTO)
 private Long id;

 private String attribute1;
 private String attribute2;
 private String featureCode;

    @ManyToOne
 private Item item;

        .....
 public String getFeatureCode() {
  if (item != null) {
   feature = item.getId() + attribute1 + attribute2;
  }
  return feature;
 }

Вы можете видеть из моего аннотации, что когда предмет вреден, он также сохранит своих детей.

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

Моя проблема в том, что идентификатор элемента генерируется из базы данных. Из отладочной информации, я предполагаю, что сначала это тот же элемент, а затем обновите элемент функции. Это приводит к пустому результату item.getId () моего featureCode.

Можно ли изменить каскадное постоянное поведение один-ко-многим, например, сначала сохранить элемент, а затем сохранить его детей?

1 Ответ

1 голос
/ 10 июня 2013

Скорее всего, ваша проблема в том, что вы используете генерацию идентификатора IDENTITY (AUTO). Вместо этого используйте TABLE или SEQUENCE, тогда ваши идентификаторы могут быть предварительно распределены, и у вас будет доступ к идентификатору элемента при сохранении, а не только после вставки.

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