簡體   English   中英

春季JPA休眠ManyToMany

[英]Spring JPA Hibernate ManyToMany

我正在將SpringBoot和Spring JPA Hibernate一起使用,我正在嘗試使用ManyToMany注釋,但是它不起作用。

連接表已創建,但從未填充。

@Entity
@Table(name = "commande")
public class Commande {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer commandeID;
private String etat;
private String date_de_validation;
@ManyToOne(cascade = CascadeType.ALL)
private Client clientID;
@ManyToOne(cascade = CascadeType.ALL)
private Livreur livreurID;
@ManyToOne(cascade = CascadeType.ALL)
private Livraison livraisonID;
@ManyToMany
@JoinTable(name = "Join_Produit_To_Commande", joinColumns = { @JoinColumn(name = "commandeID") }, inverseJoinColumns = { @JoinColumn(name = "produitID") })
private Set<Produit> produits = new HashSet<Produit>();;

public Commande() {
}

public Commande(String etat, String date_de_validation, Client clientID,
        Livreur livreurID, Livraison livraisonID) {
    setEtat(etat);
    setDate_de_validation(date_de_validation);
    setClient(clientID);
    setLivreur(livreurID);
    setLivraison(livraisonID);
}

public Integer getCommandeID() {
    return this.commandeID;
}

public void setCommandeID(Integer commandeID) {
    this.commandeID = commandeID;
}

public String getEtat() {
    return this.etat;
}

public void setEtat(String etat) {
    this.etat = etat;
}

public String getDate_de_validation() {
    return this.date_de_validation;
}

public void setDate_de_validation(String date_de_validation) {
    this.date_de_validation = date_de_validation;
}

public Client getClient() {
    return this.clientID;
}

public void setClient(Client clientID) {
    this.clientID = clientID;
}

public Livreur getLivreur() {
    return this.livreurID;
}

public void setLivreur(Livreur livreurID) {
    this.livreurID = livreurID;
}

public Livraison getLivraison() {
    return this.livraisonID;
}

public void setLivraison(Livraison livraisonID) {
    this.livraisonID = livraisonID;
}

public Client getClientID() {
    return clientID;
}

public void setClientID(Client clientID) {
    this.clientID = clientID;
}

public Livreur getLivreurID() {
    return livreurID;
}

public void setLivreurID(Livreur livreurID) {
    this.livreurID = livreurID;
}

public Livraison getLivraisonID() {
    return livraisonID;
}

public void setLivraisonID(Livraison livraisonID) {
    this.livraisonID = livraisonID;
}

public Collection<Produit> getProduits() {
    return produits;
}

public void setProduits(Set<Produit> produits) {
    this.produits = produits;
}

public String toString() {
    return "commandeID=" + commandeID + " etat=" + etat
            + " date_de_validation=" + date_de_validation + " clientID="
            + clientID + " livreurID=" + livreurID + " livraisonID="
            + livraisonID;
}

}

這是我的第二堂課

@Entity
@Table(name = "produit")
public class Produit {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer produitID;
private String libelle;
private double poid;
private String type;
@ManyToMany(mappedBy = "produits")
private Set<Commande> commandes = new HashSet<Commande>();;

public Produit() {
}

public Produit(String libelle, double poid, String type) {
    setLibelle(libelle);
    setPoid(poid);
    setType(type);
}

public String getLibelle() {
    return this.libelle;
}

public void setLibelle(String Libelle) {
    this.libelle = Libelle;
}

public double getPoid() {
    return this.poid;
}

public void setPoid(double poid) {
    this.poid = poid;
}

public String getType() {
    return this.type;
}

public void setType(String type) {
    this.type = type;
}

public Set<Commande> getCommandes() {
    return commandes;
}

public void setCommandes(Set<Commande> commandes) {
    this.commandes = commandes;
}

public String toString() {
    return "Libelle=" + libelle + " poid=" + poid + " type=" + type
            + " produitID=" + produitID + " Commandes : " + commandes;
}

}

這是我的單元測試

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = PfeApplication.class)
@WebAppConfiguration
@Transactional
@TransactionConfiguration(defaultRollback = true)
public class PfeApplicationTests {

@Autowired
private EntrepriseService service;
@Autowired
private PhoneService pService;
@Autowired
private LivreurService lService;
@Autowired
private CarService cService;
@Autowired
private ProduitService prService;
@Autowired
private ClientService clService;
@Autowired
private CommandeService cmdService;
@Autowired
private PositionLivreurService posService;
@Autowired
private LivraisonService livService;

@Test
public void contextLoads() {
}

@Test
@Transactional
public void manyToManyTest(){
    Produit produit1 = new Produit("Lavabo", 50, "Cassable");
    Livreur livreur1 = new Livreur("Adadi", "Soufiane", "03/03/1992", "0876543456");
    Client client1 = new Client("Ouali", "Ouali@gmail.com", "0743453462", "Fes", "NoLogo");
    Livraison livraison1 = new Livraison("24/04/2015", "25/04/2015", false, false, livreur1);
    Commande commande1 = new Commande("Validé", "25/04/2015", client1, livreur1, livraison1);
    produit1.getCommandes().add(commande1);
    commande1.getProduits().add(produit1);
    cmdService.addCommande(commande1);
    prService.addProduit(produit1);
}
}

這個問題類似於我的較早發布。 請參閱我的原始帖子 我自己解決了它-基本上是實現中的錯誤,但是如果您僅將Set<>更改為List<> ,則可能可行。 您的情況有所不同,您使用的是Spring實現,但誰知道...

解決 !

我必須將它們都添加到同一事務的同一會話上,然后提交。

暫無
暫無

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

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