java - hibernate "where"查询仅适用于 id 字段

标签 java sql hibernate

我的 Hibernate 查询有问题,如下所示:

List persons = getList("FROM creator.models.Person p WHERE p.lastName="+userName);

(getList(String queryString) 方法只是使用 session 工厂执行查询。)

这是我的个人类(class):

@Entity
@Table(name="persons")
public class Person{
    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    @Column(name = "id")
    private Long        id;

    @Column(name="first_name", nullable=false, updatable=true)
    private String firstName;

    @Column(name="last_name", nullable=false, updatable=true)
    private String lastName;
    /// etc

这是表格:

CREATE TABLE persons(
    id INTEGER NOT NULL AUTO_INCREMENT,
    first_name CHAR(50),
    last_name CHAR(50),
    abbreviation CHAR(4),

    PRIMARY KEY (id)
);

搜索名为 TestName 的人时,我收到一条异常消息:

org.hibernate.exception.SQLGrammarException: Unknown column 'TestName' in 'where clause'
    at org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:82)
    at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49)
//etc

Hibernate 创建的查询如下所示:

INFO: HHH000397: Using ASTQueryTranslatorFactory
Hibernate: select person0_.id as id8_, person0_.abbreviation as abbrevia2_8_, person0_.first_name as first3_8_, person0_.last_name as last4_8_ from persons person0_ where person0_.last_name=TestName
Dec 10, 2012 5:14:26 PM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions

顺便说一句,搜索 id (...WHERE p.id="3") 工作正常!

我希望有人知道出了什么问题,因为对我来说查询看起来是正确的,但我无法找出为什么 lastName 突然被视为列名。

最佳答案

您需要将用户名放在引号中:

"FROM creator.models.Person p WHERE p.lastName='"+userName+"'";

或者(更好)使用参数

关于java - hibernate "where"查询仅适用于 id 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13804940/

相关文章:

java - 如何将二维数组拆分为左右数组?

php - 根据另一个表的选择结果选择一个表

sql - 触发器或 SP : what should I use in my case?

java - 无法将对象转换为实体类型

java - 模式验证 : missing table [hibernate_sequences]

java - 如何在 Mac 上使用终端从 Eclipse 编译 Java 程序

java - 如何在 Eclipse 中使用 BndTools 设置 iPojo?

java - 当我尝试将 ArrayList 添加到 ArrayList 时,第二个 ArrayList 正在重复

sql - 在SQL Server中无时间比较日期的最佳方法

eclipse - 每个实体 Bean 都必须在persistence.xml 中注册吗?