Frühlings-Daten - ODER-Bedingung, die in einem repository-Methode name

In meinem Spring-Data-Projekts habe ich ein folgenden Unternehmen:

@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;

....

}

Brauche ich zur Umsetzung einer Spring-Data-repository-Methode, die sich für eine CardPair basierend auf cardPairId, board und card. Der kompliziertere Fall ist mir ein Card weil ich konstruieren müssen, eine Bedingung, wo card1 = card or card2 = card

Ist es möglich, diesen Zustand über Spring Data repository-Methode name ?

Beispielsweise

cardPairRepository.findByIdAndBoardAnd[card1 = card or card2 = card]AndSelectedCardIsNull(cardPairId, board, card);

Ist es möglich, übersetzen diese Bedingung card1 = card or card2 = card im Namen einer Methode ?

  • Sind Sie gerade auf der Suche nach einer Methode, die Namen hier?
  • Ja, ich kann nicht konstruieren diese Methode Namen mit der erwähnten Bedingung
  • Verwenden Sie die finder-Methoden, die nur für einfache Anwendungsfälle, für complexer Fällen schreiben Sie eine Abfrage, und verwenden Sie die @Query annotation.
  • Ich würde stark vorschlagen, schreiben Sie die Abfrage selbst mit HPQL..
  • Danke! Ich habe umgesetzt JPQL-Abfrage, und nun funktioniert alles wunderbar. @Query(value = "SELECT cp FROM CardPair cp WHERE id = :cardPairId AND board = :board AND card1 = :card OR card2 = :card AND selectedCard is null")
InformationsquelleAutor alexanoid | 2016-05-09
Schreibe einen Kommentar