Я получаю сообщение об ошибке в проекте Hibernate. Существует класс Kisi . Вот структура классов моего проекта:
Kisi entity:
@Entity
@Table(name = "KISI" )
public class Kisi implements java.io.Serializable {
/**
*
*/
private static final long serialVersionUID = 3283201458992402052L;
@Id
@Column(name = "ANAHTAR")
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator = "kisi_Sequence")
@SequenceGenerator(name = "kisi_Sequence", sequenceName = "KISI_SEQ" , allocationSize = 1)
private int anahtar;
@ManyToOne(fetch = FetchType.LAZY, cascade= {CascadeType.ALL})
@JoinColumn(name = "UNVANANAHTAR", nullable = true)
private Unvan unvani;
@Column(name = "ADI", columnDefinition = "VARCHAR2(700 Byte)", nullable = false)
private String adi;
@Column(name = "SOYADI", columnDefinition = "VARCHAR2(1000 Byte)", nullable = false)
private String soyadi;
@OneToOne(fetch = FetchType.LAZY)
@PrimaryKeyJoinColumn
private Kimlik kimligi;
@Column(nullable = true)
private LocalDate dogumTarihi;
@Enumerated
@Column(name="CINSIYET", columnDefinition = "smallint", nullable = true)
private Cinsiyet cinsiyeti;
@Enumerated
@Column(name="MEDENIDURUMU", columnDefinition = "smallint", nullable = true)
private MedeniDurum medeniDurumu;
@OneToOne(fetch = FetchType.LAZY)
@PrimaryKeyJoinColumn
private KisiDetay kisiDetay;
@OneToMany(fetch = FetchType.LAZY, mappedBy = "kisisi")
private Set<KisiIletisim> iletisimKumesi;
public Kisi() {
super();
String bosSozce = Sabit.BOSSOZCE;
this.anahtar = Integer.MIN_VALUE;
this.unvani = null;
this.adi = bosSozce;
this.soyadi = bosSozce;
this.kimligi = null;
this.dogumTarihi = Sabit.BOSTARIH;
this.cinsiyeti = Cinsiyet.VARSAYILAN;
this.medeniDurumu = MedeniDurum.VARSAYILAN;
this.iletisimKumesi = new HashSet<KisiIletisim>(0);
this.kisiDetay = null;
}
// Constructors, getters and setters
EDIT-1 Андреас указал, что определение enum отсутствует и не подходит для этого класса. Kisi использует два перечисления: Cinsiyet (пол) и MedeniDurum (семейное положение). Несмотря на то, что я изменил его, проблема все еще сохраняется.
public enum Cinsiyet {
VARSAYILAN,
KADIN,
ERKEK
}
public enum MedeniDurum {
VARSAYILAN,
EVLI,
BEKAR,
DUL,
}
Структура таблицы базы данных выглядит следующим образом:
Таблица базы данных Kisi entity: Таблица базы данных объекта Киси
Когда я пытаюсь вставить Kisi , я получаю сообщение об ошибке:
Error: 932, Position: 121, Sql = insert в значения KISIPROFIL.KISI (ADI, CINSIYET, dogumTarihi, MEDENIDURUMU, SOYADI, UNVANANAHTAR, ANAHTAR) (: 1,: 2,: 3,: 4,: 5,: 6,: 7), Ошибка Msg = ORA-00932: несовместимые типы данных: должно быть: НОМЕР получен: ДВОИЧНЫЙ
исходный sql:
вставить в KISIPROFIL.KISI (ADI, CINSIYET, dogumTarihi, MEDENIDURUMU, SOYADI, UNVANANAHTAR, ANAHTAR) values (?,?,?,?,?,?,?)
sql:
вставить в KISIPROFIL.KISI (ADI, CINSIYET, dogumTarihi, MEDENIDURUMU, SOYADI, UNVANANAHTAR, ANAHTAR) значения (: 1,: 2,: 3,: 4,: 5,: 6,: 7)
OracleErrorNumber:
932
stacktrace
org.hibernate.exception.internal.StandardSQLExceptionConverter.convert (StandardSQLExceptionConverter. java: 42) org.hibernate.engine .jdb c .spi .SqlExceptionHelper.convert (SqlExceptionHelper. java: 109) org.hibernate.engine.jdb c .spi.SqlExceptionHelper.convert (SqlExceptionHelper. java: 95) org.hibernate.engine.jdbternal c .in .ResultSetReturnImpl.executeUpdate (ResultSetReturnImpl. java: 207) org.hibernate.engine.jdb c .batch.internal.NonBatchingBatch.addToBatch (NonBatchingBatch. java: 45) orbstract.Entiberity. insert (AbstractEntityPersister. java: 2886) org.hibernate.persister.entity.AbstractEntityPersister.insert (AbstractEntityPersister. java: 3386) org.hibernate.action.internal.EntityInsertAction.execute (EntityInsertAction. java: 8 1049 *
Как мне решить эту проблему?
Заранее спасибо.
Oracle Версия: Personal Oracle Database 11g Release 11.2.0.1.0 - 64bit Производство
Артикул:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.0.7.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>4.3.6.Final</version>
</dependency>