我正在用Hibernate做一个JEE Web应用程序。 我正在使用带注释的bean进行映射。
我展示
尽管我在论坛和其他网站上进行了研究,但无法像上图那样使主键由外键组成。
我只是设法将我的“ id-command”键放在FK中,但我希望她撰写PK。
预先感谢您的帮助。
祝你有美好的一天。
答案 0 :(得分:-1)
谢谢您的回答。
首次启动应用程序时,数据库没有表。它们是由Hibernate创建的。
我给您我的代码(我给您的代码中没有getter和setter方法): 类 BonLivraison (该类的代码结尾仅需尝试)
程序包sii.dsi.beans;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.*;
@SuppressWarnings("serial")
@Entity
@Table
public class BonLivraison implements Serializable{
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int id_bon_livraison;
@Column(nullable=false, length=255, unique=false)
private String numero_bon_livraison;
@Column(nullable=false, unique=false)
private double montant_bon_livraison;
@Column(nullable=false, unique=false)
private Date date_bon_livraison;
@Column(nullable=false, unique=false)
private Date date_depot_facture;
@OneToOne
@JoinColumn(name="id_commande")
private PosteLigne poste_ligne_id_commande;
@OneToOne
@JoinColumn(name="id_posteligne")
private PosteLigne poste_ligne_id;
// Getters and Setters
}
Commande 类:
package sii.dsi.beans;
import java.io.Serializable;
import javax.persistence.*;
import sii.dsi.beans.Affaire;
@SuppressWarnings("serial")
@Entity
@Table
public class Commande implements Serializable{
@Column
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int id_commande;
@Column(nullable=false, length=255, unique=false)
private String numero_commande;
@Column(nullable=false, length=255, unique=false)
private String numero_bc;
@OneToOne
private Affaire affaire;
}
PosteLigne 类:
package sii.dsi.beans;
import java.io.Serializable;
import javax.persistence.*;
@SuppressWarnings("serial")
@Entity
@Table
public class PosteLigne implements Serializable{
@EmbeddedId
private PosteLignePK poste_ligne_pk;
@Id
private int id_poste_ligne;
@Column(nullable=false, unique=false)
private double montant_poste_ligne;
@Column(nullable=false, unique=false)
private boolean clos;
@Column(nullable=false, unique=false)
private int numero_ligne;
}
类 PosteLignePK :
package sii.dsi.beans;
import java.io.Serializable;
import javax.persistence.*;
@SuppressWarnings("serial")
@Embeddable
public class PosteLignePK implements Serializable{
private int id_poste_ligne;
@OneToOne
@JoinColumn(name="id_commande")
private Commande commande;
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + id_poste_ligne;
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
PosteLignePK other = (PosteLignePK) obj;
if (id_poste_ligne != other.id_poste_ligne)
return false;
return true;
}
}
错误消息:
一个外键,引用来自的sii.dsi.beans.PosteLigne sii.dsi.beans.BonLivraison的列数错误。应该是2
我认为问题在于BonLivraison课程的结束。
感谢您的帮助