JPA составной первичный ключ / сопоставление внешнего ключа - PullRequest
0 голосов
/ 20 ноября 2018

У меня есть 2 таблицы, такие как

enter image description here

, затем я пытаюсь сопоставить с использованием @Embeddable как Эта ссылка

Week_Effort.java

@Entity 
@IdClass(Week_Effort.class)
@Table(name = "week_effort")
public class Week_Effort implements Serializable  {

private static final long serialVersionUID = -2825819221813101109L;

@Id
@Column(name="week_id") 
private int week_id;

@Id
@Column(name="timesheet_id")
private int timesheet_id;

@Column(name="day1")
private int day1;

@ManyToOne(fetch = FetchType.LAZY ,cascade=CascadeType.ALL)
@JoinColumn(name="timesheet_id" , referencedColumnName =     "timesheet_id",insertable=false, updatable=false , foreignKey =   @ForeignKey(name = "fkweekts"))
private Timesheet timesheet_id ;
.
.
.
//get and set
}

Timesheet.java

@Entity
@Table(name = "timesheet")
public class Timesheet implements Serializable{

private static final long serialVersionUID = 7014333990749288304L;

@GeneratedValue(strategy = GenerationType.IDENTITY)
@Id
@Column(name = "timesheet_id")
private int timesheet_id;

@OneToMany(mappedBy="timesheet_id" , cascade=CascadeType.ALL)
private Set<Week_Effort> weekeffort ;
.
.
.
//get and set 

}

WeekEmbed.java

@Embeddable
public class WeekEmbed implements Serializable {

private static final long serialVersionUID = 3229945076116848141L;

int timesheet_id;
int week_id;

//get set

}

Я использую AJAX для публикации параметров в виде json, например

{"timesheet_id":1,"day1":"8"} //and more 6 parameter

week_id, сгенерированных каким-либо процессом, и затем устанавливаю их перед добавлением с CRUD в Jparepository. Но ошибка

java.sql.SQLException: Parameter index out of range (10 > number of parameters, which is 9)

Как это исправить?Что я тут не так делаю?

1 Ответ

0 голосов
/ 20 ноября 2018

From: Hibernate: индекс параметра вне диапазона (8> количество параметров, которое равно 7)

Я изменяю @IdClass на WeekEmbed.class и удаляю некоторую часть, затем добавляю @Id к отображению объекта.

Week_Effort.java

@Entity 
@IdClass(WeekEmbed.class)
@Table(name = "week_effort")
public class Week_Effort implements Serializable  {

private static final long serialVersionUID = -2825819221813101109L;

@Id
@Column(name="week_id") 
private int week_id;

//Delete this part
//@Id
//@Column(name="timesheet_id")
//private int timesheet_id;

@Column(name="day1")
private int day1;

@Id
@ManyToOne(fetch = FetchType.LAZY )
@JoinColumn(name="timesheet_id" , referencedColumnName = "timesheet_id",insertable=false, updatable=false , foreignKey = @ForeignKey(name = "fkweekts"))
private Timesheet timesheet_id ;
.
.
.
//get and set
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...