代码中的Java JPA Mysql错误:无法将状态字段路径解析为有效类型

时间:2017-08-27 13:57:49

标签: java mysql jpa eclipselink

我有一个问题,我无法弄清楚代码的问题。 我是Japa Jpa项目的新手,我无法理解。 提前谢谢!

这是我得到的错误。它更长,但我希望这已经足够了。

setContentsMargins(0,0,0,0)

有问题的一行:

Exception in thread "JavaFX Application Thread" java.lang.IllegalArgumentException: An exception occurred while creating a query in EntityManager: 
Exception Description: Problem compiling [SELECT item FROM NewsArticle item WHERE item.user.idUser = '0']. 
[40, 56] The state field path 'item.user.idUser' cannot be resolved to a valid type.
    at org.eclipse.persistence.internal.jpa.EntityManagerImpl.createQuery(EntityManagerImpl.java:1743)

使用表格生成实体生成的类:

 Query getFeed = entityManager.createQuery("SELECT item FROM NewsArticle item WHERE item.user.idUser = \'" + loggedUser.getIduser() + "\'");

1 个答案:

答案 0 :(得分:1)

您将id定义为int

@Id
private int idnews;

然后在查询中你把它放在两个引号之间?!

item.user.idUser = \'" + loggedUser.getIduser() + "\'"
//------------------^-------------------------------^

这就是问题所在,所以要解决它只是删除引号

重要

除了避免在查询中连接它不安全,而是可以使用setParameter之类的:

Query getFeed = entityManager.createQuery("SELECT item FROM NewsArticle item WHERE item.user.idUser = :id");
getFeer.setParameter("id", loggedUser.getIduser());