Re[3]: Hibernate mapping question...
От: deepsky Украина  
Дата: 22.08.05 12:51
Оценка:
Здравствуйте, BeerKiller, Вы писали:

BK>Здравствуйте, deepsky, Вы писали:

BK>но возник другой вопрос (
BK>при таком мапинге говорится что не найдены геттеры и сеттеры (для ID) для
BK>полей person и car в классе TakenCar. предположим это можно изобразить
BK>вот так:

BK>
BK>public long getPersonId(){
BK>  return person.getId();
BK>}
BK>public void setPersonId(long id){
BK>  person.setId(id)
BK>}
BK>public long getCarId(){
BK>  return car.getId();
BK>}
BK>public void setCarId(long id){
BK>  car.setId(id)
BK>}
BK>


Для всех филдов в классе, для которых есть мапинг, должны быть сеттеры/геттеры, иначе хибернейт не сможет им присвоить значения.
Что касается TakenCar — если у вас такой же маппинг как в первом варианте, тогда нужно в
класс TakenCar добавить два поля — person и car, соответствующих классов и с соответствующими геттерами/сетеррами.
Этого должно хватить.
Или приведите свой мапинг/определения классов.

BK>пытаюсь сохранить объект TakenCar:

BK>
public static void main(String[] args){

BK>    Session session = HibernateUtil.currentSession();
BK>    Transaction tx = session.beginTransaction();
        
BK>    Person person = new Person();
BK>    person.setName("Some_name");
BK>    person.setAge(35);
BK>    Car car = new Car();
BK>    car.setModel("Some_model");
BK>    car.setColor("green");
BK>    session.save(person);
BK>    session.save(car);
BK>    TakenCar takencar = new TakenCar();
BK>    takencar.setPerson(person);
BK>    takencar.setCar(car);
BK>    session.save(takencar);

BK>    tx.commit();
BK>    HibernateUtil.closeSession();
BK>}


BK>объекты car и person сохраняются, а в месте
session.save(takencar);
возникает ексепшн.

BK>вот строки из аутпута:

Вроде бы всё правильно, проблема скорее всего в мапинге TakenCar.

BK>как это чинить? или где об этом почитать?


Почитать — на хибернейт.орг, тут без вариантов.

BK>заранее большое спасибо!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.