java - 存储库查询和实体实例变量名称

标签 java spring hibernate spring-boot spring-data-jpa

我正在尝试像这样在我的 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 注解并指定属性名称。

引用: https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#repositories.query-methods.query-creation

如果不想改变方法名,使用@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/

相关文章:

java - JSF + Hibernate 服务器错误 : class javax. el.PropertyNotFoundException

java - 从java中的web url下载图像?

java - Android 是否包含类似于 java.awt.geom 的库?

mysql - Spring Hibernate MySql - 无法添加外键约束

spring - 路由器功能中的 REST 请求参数验证

java - 从 Spring MVC Rest 服务抛出的 Jersey REST 客户端捕获异常

java - 使用哪一个 : OpenSessionInViewInterceptor or OpenSessionInViewFilter?

java - 如何将 XML 文件输出到 Java 中的 REST Web 服务,以便另一个应用程序可以使用此 XML?

java - JPA - @EmbeddedId 和 @Id

java - 带有 Hibernate 的 Jasper - 找不到实体类