【发布时间】:2016-12-29 07:57:52
【问题描述】:
我正在尝试在我的 Spring Repository 类中使用这样的方法:
public
interface
ToolRepository extends Repository<Tool, Long>
{
public Tool findByNumber(String inNumber);
}
使用这样定义的实体列。请注意,虽然我明确地将列命名为“number”,但 Spring(或 Hibernate)看到实际的成员变量名称“mNumber”并且无法生成正确的查询。
import javax.persistence.Column;
@Entity
@Table(name = "Tool")
public
class
Tool implements Serializable
{
@Column(name = "number") protected Integer mNumber;
public Integer getNumber() { return mNumber; }
protected void setNumber(Integer inVal) { mNumber = inVal; }
}
是否有注解来指定 Spring 在解释查询时应该使用的名称?
这段代码是用spring-boot1.4.3.RELEASE构建的,我用的是Postgres。
【问题讨论】:
-
您确定您使用的是“正确的”
@Column,您导入的注解是否正确!? -
@luk2302,我正在使用 javax.persistence.Column
-
@Surace 不应该是必需的,它应该完全按照 OP 的预期工作。
-
删除你的 mNumber 的 getter 和 setter,让 IDE 重新生成。
-
是的,正如@SaiYeYanNaingAye 所建议的那样,为
mNumber重新创建setter/getter 以完全匹配变量的名称,对于Repository类也是如此,您的查询应该命名为findBymNumber.
标签: java spring hibernate spring-boot spring-data-jpa