• Как правильно вставить коллекцию через Hibernate?

    @Nepster9 Автор вопроса
    sirs: Да спасибо за помощь, очень выручили. К сожалению пишу ещё топорно с кучей лишних переменных и телодвижений..., потом пытаюсь "затягивать гайки". CascadeType.PERSIST выбрал этот вариант. Не знаю как отметить Ваш коментарий как правильный ответ.
  • Как правильно вставить коллекцию через Hibernate?

    @Nepster9 Автор вопроса
    sirs: Огромное спасибо за наводку да действительно каждый раз создавал новый объект. Переписал вот так:

    public Spr1 getByCode(String code) {
    SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
    if (session==null){ session = sessionFactory.openSession();}
    Spr1 spr1 = null;
    try {
    session.beginTransaction();
    Criteria criteria = session.createCriteria(Spr1.class).add(Restrictions.eq("code", code)).setMaxResults(1);
    spr1 = (Spr1) criteria.uniqueResult();
    session.getTransaction().commit();
    } catch (Exception e) {
    session.getTransaction().rollback();
    e.printStackTrace();
    }finally{

    }
    return spr1;
    }

    Но теперь возник дополнительный вопрос как избавиться от такого рода дёрганья базы Update-ами или это плата за :
    select
    this_.id as id1_0_0_,
    this_.CODE as CODE2_0_0_
    from
    public.SPR1 this_
    where
    this_.CODE=? limit ?
    Hibernate:
    select
    this_.id as id1_1_0_,
    this_.CODE as CODE2_1_0_
    from
    public.SPR2 this_
    where
    this_.CODE=? limit ?
    Hibernate:
    select
    nextval ('public.hibernate_sequence')
    Hibernate:
    insert
    into
    public.TDATA
    (SPR1_ID, SPR2_ID, SUMMA, id)
    values
    (?, ?, ?, ?)
    Hibernate:
    update
    public.SPR1
    set
    CODE=?
    where
    id=?
    Hibernate:
    update
    public.SPR2
    set
    CODE=?
    where
    id=?
  • Как правильно вставить коллекцию через Hibernate?

    @Nepster9 Автор вопроса
    sirs: мне нужно достать сущность не по ID как обычно показывают в примерах методами get или load, а по тому значению должно прийти в коллеккции (строковые значения "0029"). найти такую сущность в базе и по связи один ко многим добавить в основную таблицу ID этой сущности. если я правильно понимаю методику такой обработки.
  • Как правильно вставить коллекцию через Hibernate?

    @Nepster9 Автор вопроса
    sirs:
    @Override
    public Spr1 getByCode(String code) {
    SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
    if (session==null){ session = sessionFactory.openSession();}

    Spr1 spr1 = new Spr1();
    try {
    session.beginTransaction();
    String sql = "SELECT id, code "
    + "from public.spr1 where code= :code";
    Query query = (Query) session.createSQLQuery(sql);
    query.setParameter("code",code);

    List results = null;
    results = query.list();

    for (Object []obj:results) {
    Long l1;
    BigInteger bi;
    bi = (BigInteger) obj[0];
    l1 = bi.longValue();
    spr1.setId(l1);
    spr1.setCode((String) obj[1]);
    }
    session.getTransaction().commit();
    session.flush();
    } catch (Exception e) {
    session.getTransaction().rollback();
    e.printStackTrace();
    }finally{

    }
    return spr1;
    }
    возвращает значение нормально и заносит в коллекцию тоже но после
    session.save(itr); на 2-й или 3-й раз вылктает ошибка.