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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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