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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Маппинг - cj,snbt prepersist не срабытывает, Требуется запуск хранимой процедуры 
:(
    Опции темы
smolbars
Дата 28.10.2016, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Всем привет!
Требуется вызвать из Hibernate хранимку.
Зачем - ну потому что именно она должна сгенерить primary key
Ибо primary key строковый. Глупо но по другому никак - так спроектирована БД.


@EntityListeners(Gnr.class)
public class EntGnrListener
{
    @Inject
    private GnrRepository gnrRepository;
 
    @PrePersist
    public void f01(Gnr gnr)
    {
        gnr.setGnrid(gnrRepository.f01());
    }
}

Вот маппиннг самой процедуры - БД Oracle 12g

[code=java]
@Procedure
    String f01();[code=java]


Маппинг объекта gnr

[code=java]
package de.kvwl.abrechnung.gostamm.transfer.model;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.OrderColumn;
import javax.persistence.PrimaryKeyJoinColumn;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import org.apache.commons.lang3.builder.HashCodeBuilder;
import org.apache.commons.lang3.builder.ReflectionToStringBuilder;

import com.qualinsight.plugins.sonarqube.smell.api.annotation.Smell;
import com.qualinsight.plugins.sonarqube.smell.api.annotation.Smells;
import com.qualinsight.plugins.sonarqube.smell.api.model.SmellType;

/**
* The persistent class for the GNR database table.
*
*/
@Entity
@Table(name = "GNR")
@NamedQuery(name = "Gnr.findAll", query = "SELECT g FROM Gnr g")
@Smells({
        @Smell(minutes = 5, reason = "This class should implement toString() using Apache ToStringBuilder (see commons-lang3)", type = SmellType.MISSING_IMPLEMENTATION),
        @Smell(minutes = 15, reason = "This class should implement hashCode() and equals() by using Apache Common libary (see commons-lang3)", type = SmellType.MISSING_IMPLEMENTATION) })
public class Gnr implements Serializable
{
    private static final long serialVersionUID = 1L;

    @Id
    /*@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "ID_SEQ_GNR")
    @SequenceGenerator(name = "ID_SEQ_GNR", sequenceName = "SEQ_GNR")
    @Column(columnDefinition = "CHAR(14)")
    @GenericGenerator(name = "STRING_SEQUENCE_GENERATOR", strategy = "de.kvwl.abrechnung.gostamm.transfer.model.StringSequenceGenerator", parameters = {
            @Parameter(name = "STRING_SEQUENCE_GENERATOR", value = "SEQ_GNR") })
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "STRING_SEQUENCE_GENERATOR")*/
    /*@GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "GNRID", unique = true, nullable = false)*/
    private String gnrid;

    public void setGnrid(String gnrid)
    {
        this.gnrid = gnrid;
    }

    public String getGnrid()
    {
        return this.gnrid;
    }

    private String alphateil;

    @Temporal(TemporalType.DATE)
    @Column(name = "EFF_TMR_BIS")
    private Date effTmrBis;

    @Temporal(TemporalType.DATE)
    @Column(name = "EFF_TMR_VON")
    private Date effTmrVon;

    private String erstesabrechnungsquartal;

    private String gebuehrennummer;

    @Temporal(TemporalType.DATE)
    @Column(name = "LETZTEAENDERUNG_VT")
    private Date letzteaenderungVt;

    private String letztesabrechnungsquartal;

    private int mandantnummer;

    private int nummer;

    private int updcount;

    //bi-directional many-to-one association to Leistung
    // @OneToMany(mappedBy = "gnr", fetch = FetchType.LAZY, cascade = CascadeType.ALL)
    @OneToMany(mappedBy = "gnr", fetch = FetchType.LAZY, cascade = { CascadeType.MERGE, CascadeType.REFRESH })
    @PrimaryKeyJoinColumn
    @OrderColumn
    private List<Leistung> leistungs;

    public Gnr()
    {
    }

    public String getAlphateil()
    {
        return this.alphateil;
    }

    public void setAlphateil(String alphateil)
    {
        this.alphateil = alphateil;
    }

    public Date getEffTmrBis()
    {
        return this.effTmrBis;
    }

    public void setEffTmrBis(Date effTmrBis)
    {
        this.effTmrBis = effTmrBis;
    }

    public Date getEffTmrVon()
    {
        return this.effTmrVon;
    }

    public void setEffTmrVon(Date effTmrVon)
    {
        this.effTmrVon = effTmrVon;
    }

    public String getErstesabrechnungsquartal()
    {
        return this.erstesabrechnungsquartal;
    }

    public void setErstesabrechnungsquartal(String erstesabrechnungsquartal)
    {
        this.erstesabrechnungsquartal = erstesabrechnungsquartal;
    }

    public String getGebuehrennummer()
    {
        return this.gebuehrennummer;
    }

    public void setGebuehrennummer(String gebuehrennummer)
    {
        this.gebuehrennummer = gebuehrennummer;
    }

    public Date getLetzteaenderungVt()
    {
        return this.letzteaenderungVt;
    }

    public void setLetzteaenderungVt(Date letzteaenderungVt)
    {
        this.letzteaenderungVt = letzteaenderungVt;
    }

    public String getLetztesabrechnungsquartal()
    {
        return this.letztesabrechnungsquartal;
    }

    public void setLetztesabrechnungsquartal(String letztesabrechnungsquartal)
    {
        this.letztesabrechnungsquartal = letztesabrechnungsquartal;
    }

    public int getMandantnummer()
    {
        return this.mandantnummer;
    }

    public void setMandantnummer(int mandantnummer)
    {
        this.mandantnummer = mandantnummer;
    }

    public int getNummer()
    {
        return this.nummer;
    }

    public void setNummer(int nummer)
    {
        this.nummer = nummer;
    }

    public int getUpdcount()
    {
        return this.updcount;
    }

    public void setUpdcount(int updcount)
    {
        this.updcount = updcount;
    }

    public List<Leistung> getLeistungs()
    {
        return this.leistungs;
    }

    public void setLeistungs(List<Leistung> leistungs)
    {
        this.leistungs = leistungs;
    }

    public Leistung addLeistung(Leistung leistung)
    {
        getLeistungs().add(leistung);
        leistung.setGnr(this);

        return leistung;
    }

    public Leistung removeLeistung(Leistung leistung)
    {
        getLeistungs().remove(leistung);
        leistung.setGnr(null);
        return leistung;
    }

    @Override
    public String toString()
    {
        return ReflectionToStringBuilder.toStringExclude(this, "leistungs");
    }

    @Override
    public int hashCode()
    {
        return new HashCodeBuilder(17, 37).append(this.nummer).append(this.gebuehrennummer).toHashCode();
    }    
}

Ошибка в сущности та же как я пыталася решить вопрос и без вызова хранимки - последовательность не найдена.
 
Но в данном случае я хочу как раз именно хранимкой заменить секвенс.
 
Что делаю не так что не выполняется хранимка? Там стоит точка останова по вызову в prepersist но не работает.
 
Код ошибки
 ORA-02289
испольщую Spring Boot
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.1116 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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