Bonjour à tous,
Encore en pleine galère sur JPA et les relations ! Malgré mes recherches sur le net depuis des heures je ne trouve pas les cas dans lesquels je suis.
Actuellement j'ai ce message d'erreur :
More than one row with the given identifier was found: 000002, for class: com.icl.m3.model.OrderLine
Le message d'erreur est du au faite que j'ai 2 orderLine avec un BOOKS_ID similaire (000002) MAIS ces 2 orderLine on un ID différent donc ça devrait passer.
Voici mes tables abrégées :
table BOOKS :
- ISBN13(string)
- UNIT_PRICE
table ORDER_LINES:
- ID (PK)
- BOOKS_ID(string)
Je veux pouvoir faire en sorte que :
- 1 ligne de commande ne peut avoir qu'un livre
- 1 livre peut être sur plusieurs ligne de commande
- Relation imposée : OneToOne
Je veux pouvoir également :
- Récupérer mon livre via ma ligne de commande
Voici ma classe de book:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| @Entity
@XmlRootElement
@Table(name = "BOOKS")
public class Book implements Serializable {
private static final long serialVersionUID = 1L;
// ////////////////Colonnes//////////////////
@Id
@NotNull
@Length(max = 17, message = "Référence trop grande")
@Column(name = "ISBN13")
private String isbn;
@Column(name = "UNIT_PRICE")
private Double unitPrice;
// ////////////////Relations//////////////////
// 06
@OneToOne(mappedBy = "book")
private OrderLine orderLine; |
Voici ma classe OrderLine :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| @Entity
@XmlRootElement
@Table(name = "ORDER_LINES")
public class OrderLine implements Serializable {
private static final long serialVersionUID = 1L;
// ////////////////Colonnes//////////////////
@Id
@NotNull
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID")
private Integer id;
//@NotNull
//@Length(max = 17)
//@Column(name = "BOOKS_ID")
//private String booksIsbn13;
// ////////////////Relations//////////////////
// 06
// Création/liaison du champs BOOKS_ID dans la table OrderLine pointant vers l'ID ISBN13 de la table BOOKS
@OneToOne
@JoinColumn(name = "BOOKS_ID", referencedColumnName = "ISBN13")
private Book book; |
Je voudrais aussi pouvoir déclarer ma @Column(name = "BOOKS_ID") afin de lui mettre les annotations que vous pouvez déjà voir en commentaire (Sauf si il y a une autre manière de faire).
Merci d'avance
Partager