gpt4 book ai didi

hibernate - 如何使用 JPA 在表中查找值

转载 作者:行者123 更新时间:2023-12-02 01:33:56 24 4
gpt4 key购买 nike

我有两个实体 COMMANDE 和 ARTICLES,它们之间有一个 ManytoMany 关联,这个关联创建了一个新表“DETAIL_Commande”,它有两列 id_commande 和 id_article,我想在这个表中找到一个带有 id_commande 和 JPA 的值

文章代码

@Entity
@Table(name="TB_ARTICLES")
public class Article implements Serializable{
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private long id_article ;
private String nom_article ;
private String designation ;
private double prix_unitaire ;
private int quantite;
@ManyToMany
@JoinTable(name="TB_DETAIL_COMMANDES"
,joinColumns=@JoinColumn(name="id_article"),inverseJoinColumns=@JoinColumn(name="id_commande"))`enter code here`
private List<Commande> commandes ;

命令实体代码:

@Entity
@Table(name="TB_COMMANDES")
public class Commande implements Serializable{
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private long id_commande ;

private String date_commande ;
private String date_livraison ;
private String etat ;
private double montant_ht;
private double montant_ttc;
private int quantite;
@ManyToOne()
private Client client ;

@ManyToMany
@JoinTable(name="TB_DETAIL_COMMANDES"
,joinColumns=@JoinColumn(name="id_commande"),inverseJoinColumns=@JoinColumn(name="id_article"))
private List<Article> articles ;

我尝试了这段代码,但它没有代码

public List<Article> getAllArticlesByCodeCommande(long code_commande) {
Query query = entity_manager.createQuery("SELECT c FROM TB_DETAIL_COMMANDES c where c.id_commande like:x");
query.setParameter("x", code_commande);
List<Article> article = query.getResultList();
return article;`enter code here`
}

最佳答案

根据您的映射注释,您在 Commande 和 Article 之间没有一个关联,而是两个关联:都是多对多的。

如果您真的只想要一个关联,您应该选择关联的一侧将其标记为 mappedBy。例如,让 Article.commandes 保持不变,然后在 Commande

上执行下一步
@ManyToMany(mappedBy="commandes")
private List<Article> articles ;

回到问题,在getAllArticlesByCodeCommande方法中混合了(而且是错误的!)native映射信息里面的一个 JPA需要 JPQL 的查询 .我修复了代码以向您展示和示例,但您必须点击链接才能理解 JPA。还有 here您可以查看 JPQL 示例和语法。

public List<Article> getAllArticlesByCodeCommande(long code_commande) {
Query query = entity_manager.createQuery("SELECT a FROM Commande c JOIN c.articles a WHERE c.id_commande = :x");
query.setParameter("x", code_commande);
List<Article> article = query.getResultList();
return article;
}

关于hibernate - 如何使用 JPA 在表中查找值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32318353/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com