У меня есть три класса сущностей:
Код: Выделить всё
@Entity class A { Long getId(); ... }
@Entity class B { Long getId(); ... }
@Entity
@IdClass(ABPK.class)
@Data
class AB {
@Id
@Column(name="a_id", insertable=false, updatable=false)
private Long aId;
@Id
@Column(name="b_id", insertable=false, updatable=false)
private Long bId;
@ManyToOne
@JoinColumn(name="a_id")
private A a;
@ManyToOne
@JoinColumn(name="b_id")
private B b;
public AB() { }
public AB(A a, B b) {
this.a = a;
this.aId = a.getId();
this.b = b;
this.bId = b.getId();
}
}
@Data
class ABPK implements Serializable {
Long aId;
Long bId;
}
Код: Выделить всё
var a = new A("a");
var b = new B("b");
var ab = new AB(a,b);
abDao.saveAndFlush(ab);
Причина: java.sql.SQLException: индекс параметра вне диапазона (3 > количество параметров, равное 2).
Сгенерированный им оператор вставки в журналах указан правильно.
Код: Выделить всё
Hibernate: insert into ab (a_id, b_id) values (?, ?)
Подробнее здесь: https://stackoverflow.com/questions/784 ... -extra-par