我有一个实体CategoryElement:
@Entity(name = "CategoryElement ")
@Table(name = "category_element")
public class CategoryElement {
@Column(columnDefinition = "varchar(100)", name = "farsi_name",nullable = false)
private String farsiName;
/* and other stuff*/ 我想为这个实体编写一个查询,就像在preparedStatement中那样,但是我得到了这个语法错误cannot resolve symbol
这是我的疑问:
public List<CategoryElement> findByName(String farsiName) {
EntityManager manager = HibernateUtils.getEntityManager();
Query query = manager.createQuery("select o from CategoryElement as o where o.farsi_name=:param");
query.setParameter("param",farsiName);
List categoryElementList = query.getResultList();
manager.close();
return categoryElementList;
}我在第3行:cannot resolve symbol 'CategoryElement '中得到了语法错误,在第4行中,我得到了关于param的相同消息
我尝试过这样的CreateNativeQuery()方法:
Query query = manager.createNativeQuery("select * from category_element where farsi_name =: param", CategoryElement.class);
query.setParameter("param",farsiName); 但是,我在param的第2行中再次收到了相同的消息
我查过这个Link,但它解决不了我的问题。
我不知道。
编辑:我使用的是jdk1.8 1.8+ tomcat 9+ Hibernate 5.4.27
发布于 2021-05-24 07:17:37
@Entity(name = "CategoryElement ")通过这一点:
@Entity(name = "CategoryElement")我建议您完全删除name注释中的@Entity参数,只留下:
@Entity默认情况下,name已经等于实体类的非限定名。
List<CategoryElement> categoryElementList = manager.createQuery(
"select o from CategoryElement o where o.farsiName = :param",
CategoryElement.class
)
.setParameter("param", farsiName)
.getResultList();这里有几个注意事项:
TypedQuery<T>的EntityManager.createQuery方法。
对于本机查询,可以通过以下方式更正
List<CategoryElement> categoryElementList = manager.createNativeQuery(
"select * from category_element where farsi_name = :param",
CategoryElement.class
)
.setParameter("param",farsiName)
.getResultList();https://stackoverflow.com/questions/67666529
复制相似问题