Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JPA查询的小麻烦_Java_Jpa - Fatal编程技术网

Java JPA查询的小麻烦

Java JPA查询的小麻烦,java,jpa,Java,Jpa,一个小时以来我遇到了一个问题请把我当作初学者 查询非常简单: public List<String> finArticleByfamille(String famille){ EntityManager em = getEntityManager(); Query qr= em.createQuery("SELECT a.libel FROM Article a WHERE a.famille_idfamille = '"+famille+"'"); return qr.get

一个小时以来我遇到了一个问题请把我当作初学者

查询非常简单:

public List<String> finArticleByfamille(String famille){
EntityManager em = getEntityManager();
Query qr= em.createQuery("SELECT a.libel FROM Article a WHERE a.famille_idfamille =   '"+famille+"'");

return qr.getResultList();
}
我得到这个错误:

Grave: null
java.util.concurrent.ExecutionException: java.lang.IllegalArgumentException: An     exception occurred while creating a query in EntityManager: 
Exception Description: Error compiling the query [SELECT a.libel FROM Article a WHERE    a.famille_idfamille = 'famille2'], line 1, column 38: unknown state or association field   [famille_idfamille] of class [glob.entitys.Article].
at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:252)
at java.util.concurrent.FutureTask.get(FutureTask.java:111)
at javax.swing.SwingWorker.get(SwingWorker.java:602)
at glob.main$32.done(main.java:2068)
at javax.swing.SwingWorker$5.run(SwingWorker.java:737)
我尊重与数据库相同的名称,那么为什么它不起作用呢?
(法语很抱歉)

听起来您的
全球实体文章
缺少您试图引用的
家庭成员
字段。查询在概念上是针对Java对象的,而不是直接针对数据库的

根据您的数据库,缺少的字段可能如下所示:

@Basic
String famille_idfamille;

虽然名字暗示它可能是外键?在这种情况下,将其映射为
字符串可能不合适。这可能是以后要看的东西。

@Tim Gage谢谢你,我刚刚注意到了一些。。 在我的实体
glob.entitys.Article
中,我有familleIdfamille as字段:

 @JoinColumn(name = "FAMILLE_IDFAMILLE", referencedColumnName = "IDFAMILLE", nullable = false)
 @ManyToOne(optional = false)
 private Famille familleIdfamille;
Famille
它是另一个实体。。 那么他不知道家庭成员是正常的

编辑:

此注释来自文档:

  • 查询字符串引用员工实体,而不是表 数据库的雇员
然后我说:

Query qr= em.createQuery("SELECT a.libel FROM Article a WHERE  a.familleIdfamille.idfamille = '"+famille+"'");
它的作用;
它不起作用是合乎逻辑的,因为
familleIdfamille
Famille
实体的一个实例…

我更喜欢使用:

em.createNamedQuery(namedQuery);
在这种情况下,您正在实体类中使用namedQuery

或者,如果需要更具体的查询,可以使用数据库引擎native sintax创建本机查询

em.createNativeQuery(Query);

你应该对你所指的帖子发表评论,或者对你原来的帖子进行编辑。在这里添加答案不是合适的回应方式。根据定义,发布一些没有类的JPQL是不完整的。JPQL语法指的是字段/属性名而不是DB列名。@DataNucleus:是的,我在回答中已经说过了,我找到了解决方案。。。
em.createNamedQuery(namedQuery);
em.createNativeQuery(Query);