JPA 2, JSF, установка идентификатора проблемы сопоставленной сущности OneToOne - PullRequest
0 голосов
/ 20 декабря 2010

мы не использовали JPA или любые другие инструменты ORM в нашем веб-приложении, сейчас мы занимаемся обновлением всего содержимого до Java EE 6,
моя проблема в том, JPA Я искал ответ и узнал, как люди решают эту проблему, у меня есть 2 энтита,


@Entity Person
{
@Id
private long id;

@JoinColumn(name="CITY_ID")
@OneToOne(fetch=FetchType.LAZY)
private City city;
....
}


и моя вторая сущность


@Entity City
{
@Id
private long id;
private String name;
.....
}

Я запрашиваю сущность человека и показываю ее на моей странице jsf

У меня есть 2 поля ввода для Person.city, чтобы показать на моей странице JSF inputhidden для идентификатора и inputtext для имени люди выбирают города из всплывающего окна, то я установил скрытый компонент для идентификатора города, с новым выбранным новым значением, и то же самое для имени, до сих пор все идет хорошо, когда я объединяю Person Entity, он также пытается объединить City, но с идентификатором, уже определенным в таблице, поэтому ошибка ограничения для Cirty Id.

что вы делаете для такой проблемы?

Я думал, что действие valueChange для inputHidden, но на жизненном цикле jsf это происходит до обновления модели, поэтому даже если я заменю сущность Person.City на новую в действии, он будет обновлен снова (фактически с теми же значениями, но это будет сделано дважды) Итак, что является лучшим решением для этой ситуации?

* 1016 спасибо *

Ответы [ 2 ]

0 голосов
/ 21 декабря 2010

Лицевые поверхности шва, конвертер , как это объясняется здесь, вам нужен специальный конвертер идентификатора в сущность, это была моя проблема

0 голосов
/ 20 декабря 2010

Вы пытаетесь сохранить нового человека и присвоить его существующему городу?Если это так, и если вы используете PersistantManager.persist (person), чем он пытается создать новый город, который терпит неудачу.Вы можете указать отношения между человеком и городом, какие варианты следовать, см. Каскадирование (в вашем случае, MERGE, я думаю).

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