存储库发现混乱

时间:2018-05-06 12:48:57

标签: spring-data spring-data-jpa

我的数据库有一个Exchanges类,其中包含CurrencyPairs列表。

是否可以使用Repository方法直接获取在给定Exchange中名称匹配的CurrencyPair?我在考虑像

这样的东西
CurrencyPairDbo findByExchangeNameAndCurrencyPairIn(...)

但我看不出如何将它们联系在一起。或者我是否需要为此编写自定义查询?这需要在ExchangeRepository还是CurrencyPairRespository?

@Entity()
@Table(name = "Exchanges")  
public class ExchangeDbo {
  @Id @GeneratedValue   
  @Getter private Long id; 

  @Getter private String exchangeName;   

  @OneToMany(mappedBy = "exchange", 
        cascade = CascadeType.ALL, 
        orphanRemoval = true, 
        fetch = FetchType.EAGER)
  @BatchSize(size=100)
  @Getter private List<CurrencyPairDbo> listCurrencyPair = new ArrayList<>();
  ...
}



@Entity() 
public class CurrencyPairDbo {
  @Id @GeneratedValue   
  @Getter private Long id;

  @Column(unique=true)
  private String currencyPair;

  @ManyToOne(fetch=FetchType.EAGER)  
  @Getter private ExchangeDbo exchange;
  ...
}

修改

我认为这不是发现...因为我想要的。我认为这样的事情:

List<CurrencyPairDbo> x = exchangeRepository.findByExchangeNameLowercaseAndListCurrencyPairCurrencyPair(exchangeName.toLowerCase(), currencyPair);

可能有效,除了返回一个Exchange对象和一个:

  

org.springframework.core.convert.ConverterNotFoundException:找不到能够从[biz.ianw.coindatabase.database.ExchangeDbo]类型转换为[biz.ianw.coindatabase.database.CurrencyPairDbo]类型的转换器

1 个答案:

答案 0 :(得分:0)

这在货币对存储库中似乎可以完成这项工作。

我添加了一个用于匹配目的的小写字段和一个效率索引。

CurrencyPairDbo findByExchangeExchangeNameLowercaseAndCurrencyPairNameLowercase( String exchangeName, String currencyPair );