问题描述
在我的Spring Data项目中,我有一个以下实体:
In my Spring Data project I have a following entity:
@Entity
@NamedEntityGraph(name = "graph.CardPair", attributeNodes = {})
@Table(name = "card_pairs")
public class CardPair extends BaseEntity implements Serializable {
private static final long serialVersionUID = 7571004010972840728L;
@Id
@SequenceGenerator(name = "card_pairs_id_seq", sequenceName = "card_pairs_id_seq", allocationSize = 1)
@GeneratedValue(strategy = GenerationType.AUTO, generator = "card_pairs_id_seq")
private Long id;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "card1_id")
private Card card1;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "card2_id")
private Card card2;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "selected_card_id")
private Card selectedCard;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "board_id")
private Board board;
....
}
我需要实现一个Spring Data存储库方法,该方法将根据 cardPairId
,查找
和 CardPair
> board 卡
。对我来说更复杂的情况是卡
因为我需要构建一个条件,其中 card1 = card或card2 = card
I need to implement a Spring Data repository method that will look for a CardPair
based on cardPairId
, board
and card
. The more complicated case to me is a Card
because I need to construct a condition where card1 = card or card2 = card
是否可以通过Spring Data存储库方法名称提供此条件?
Is it possible to provide this condition via Spring Data repository method name ?
例如
cardPairRepository.findByIdAndBoardAnd[card1 = card or card2 = card]AndSelectedCardIsNull(cardPairId, board, card);
是否可以翻译此条件 card1 = card或card2 = card
在方法名称中?
Is it possible to translate this condition card1 = card or card2 = card
in a method name ?
推荐答案
由于您需要使用方法名称,因此无法实现此目的最后一个条件在括号中: id =? AND board =? AND(card1 =?或card2 =?)
。无法从方法名称推断出这一点,因为它仅用于涵盖基本情况。
It is impossible to achieve this using just method name since you need the last condition to be in parentheses: id = ? AND board = ? AND (card1 = ? OR card2 = ?)
. There is no way to infer this from method name since it is intended to cover basic cases only.
您的案例有三种方式:
- @Query注释(最适合你的人)
- 命名查询
- 规格
- @Query annotation (the best candidate for you) http://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.query-methods.at-query
- Named queries http://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.query-methods.named-queries
- Specifications http://docs.spring.io/spring-data/jpa/docs/current/reference/html/#specifications
这篇关于Spring Data - 存储库方法名称中的OR条件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!