簡體   English   中英

JPA復合主鍵/外鍵映射

[英]JPA composite primary key/foreign key mapping

我有2張桌子

在此處輸入圖片說明

然后我嘗試使用@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,然后在Jparepository中添加CRUD之前進行設置。

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

如何解決這個問題? 我在這里做錯了什么?

從: 休眠:參數索引超出范圍(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
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM