我正在尝试像这样在我的 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-boot 1.4.3.RELEASE
构建的,我使用的是 Postgres。
最佳答案
将 findBy 更改为以下内容:
public interface ToolRepository extends Repository<Tool, Long>
{
public Tool findByMNumber(String mNumber);
}
如果更改参数名称,则需要使用@Param 注解并指定属性名称。
如果不想改变方法名,使用@Query注解:
public interface ToolRepository extends Repository<Tool, Long>
{
@Query("from Tool where mNumber = :number")
public Tool findByNumber(String number);
}
如果需要,为 mNumber 生成 getter 和 setter。您可以通过 IDE 生成它。
关于java - 存储库查询和实体实例变量名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41375431/