我的数据库有一个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]类型的转换器
答案 0 :(得分:0)
这在货币对存储库中似乎可以完成这项工作。
我添加了一个用于匹配目的的小写字段和一个效率索引。
CurrencyPairDbo findByExchangeExchangeNameLowercaseAndCurrencyPairNameLowercase( String exchangeName, String currencyPair );