|
Модераторы: LSD, AntonSaburov |
|
smolbars |
|
|||
Новичок Профиль Группа: Участник Сообщений: 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 |
|||
|
||||
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |