【问题标题】:Is it possible to have a field name with "by" in it when using Spring Data JPA?使用 Spring Data JPA 时是否可以有一个带有“by”的字段名称?
【发布时间】:2016-03-16 10:27:52
【问题描述】:

我有一个看起来像这样的实体

@Entity
@Getter
@Setter
public class Sheep {
    private Slaughter slaughteredBy;
}

我想编写一个存储库方法来获取给定 Slaughter 屠宰的所有绵羊:

public interface SheepRepository {
    public List<Sheep> findAllBySlaughteredBy(Slaughter slaughter);
}

但是当我调用 findAllBySlaughteredBy 方法时出现 NoSuchElementException:

java.util.NoSuchElementException
at java.util.ArrayList$Itr.next(ArrayList.java:854)
at java.util.Collections$UnmodifiableCollection$1.next(Collections.java:1042)
at org.springframework.data.jpa.repository.query.CriteriaQueryParameterBinder.bind(CriteriaQueryParameterBinder.java:63)
  1. 是否因为我的字段名称中有“by”而引发异常?
  2. 如果第一个问题的答案是肯定的,我是否真的需要重命名我的字段,或者我可以在存储库上为我的查询函数使用另一个名称来解决问题吗?

【问题讨论】:

  • JPA API 没有这样的限制。 “Spring Data JPA”可能有问题,但那不是 JPA API。
  • 你是对的,谢谢!编辑标题和标签。
  • @jod 你能贴出fullstacktrace吗,问题不是因为by。另外,我没有看到private Slaughter slaughteredBy; 字段的任何映射OneToOneManyToOneEmbeddable 等。
  • 在示例中任意杀死动物有 +1

标签: java spring hibernate jpa spring-data


【解决方案1】:

使用public List&lt;Sheep&gt; findBySlaughteredBy(Slaughter slaughter);

而不是public List&lt;Sheep&gt; findAllBySlaughteredBy(Slaughter slaughter);

因为findAllBy 不是有效的语法

【讨论】:

    猜你喜欢
    • 2017-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多