Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> JPA mapping 
:(
    Опции темы
ПашкаКорчагин
Дата 18.4.2008, 19:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 10.2.2006

Репутация: нет
Всего: нет



Пытаюсь освоить JPA.. написал простенький .. классический пример с Person...
есть БД... есть таблицы Реrson, Address, Phone i Employee
описал Entities... где Employee extends Person
Person знает свой адресс (OneToOne relation)  и свои телефоны (OneToMany)
проблема в том, что при тестировании PhoneEntity вылетает исключение 

javax.persistence.PersistenceException: org.hibernate.HibernateException: More than one row with the given identifier was found: 1, for class: demo.persistence.Person

Тесты Person отрабатывают нормально

PhoneEntity
Код

@Entity
@Table(name = "Phone")
@NamedQueries({
@NamedQuery(name = "Phone.selectAll", query = "SELECT p FROM Phone p")})
public class Phone  implements Serializable {
    @Id
    @GeneratedValue  (strategy = GenerationType.AUTO)
    @Column(name = "id", nullable = false)
    private Integer id;
    @Column(name = "type", nullable = false)
    private String type;
    @Column(name = "value", nullable = false)
    private String value;

    @JoinColumn(name = "personId") //в таблице Phone -personId внешний ключ на Person
    @ManyToOne (cascade = CascadeType.ALL)
    private Person personId;
.
.
.



ну и Person

Код

@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
@Table(name = "Person")
@NamedQueries({
@NamedQuery(name = "Person.selectAll", query = "SELECT p FROM Person p")})
public class Person implements Serializable {
    @Id
    @GeneratedValue (strategy = GenerationType.TABLE)
    @Column(name = "id", nullable = false)
    private Integer id;

    @Column(name = "firstName", nullable = false)
    private String firstName;

    @Column(name = "lastName", nullable = false)
    private String lastName;    

    @OneToMany(mappedBy = "personId")
    private Collection<Phone> phoneCollection;

    
    @JoinColumn(name = "addressId", referencedColumnName = "id")
    @OneToOne
    private Address addressId;







PM MAIL   Вверх
makados
Дата 19.4.2008, 02:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 2.10.2007
Где: Киев

Репутация: 1
Всего: 1



по-видимому, у тебя проблема с тестовыми данными. Ты дергаешь класс Person по айдишнику, который одинаков у нескольких записей. А, как известно, ID должен быть уникальным
PM MAIL WWW ICQ Skype   Вверх
ПашкаКорчагин
Дата 19.4.2008, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 10.2.2006

Репутация: нет
Всего: нет



на самом деле.. пока просто пытаюсь селектить все телефони.. и проверяю список на null


  
Код

  @Test
    public void testLoadAll() throws InvocationTargetException, IllegalAccessException {
        Query query = em.createNamedQuery("Phone.selectAll");
        List<Phone> addresses = query.getResultList();
        assertNotNull(addresses);
        assertTrue(addresses.size() > 0);
    }


Это сообщение отредактировал(а) ПашкаКорчагин - 19.4.2008, 16:41
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0625 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.