2016-06-21 30 views
0

Ich versuche, einige Unternehmen unter Verwendung der Unternehmens pk zu löschen, was ein anderes Unternehmen enthalten.Gibt es eine andere Option, um die Entität durch pk der eingeschlossenen Entität zu löschen, ohne QueryDsl zu verwenden? (

Es Mittel, Ich habe eine Entität namens ‚A‘. und es hat eine andere Entität B.

und ich will meine A Entity löschen B PK verwenden.

Aber ich coulden't eine Methode in JpaRepository außer durch die Methode ‚deletByB‘ gefunden.

ich will nicht mein Unternehmen A löschen, indem Sie Löschen von Entität.

public interface ARepository extends JpaRepository<AEtt, Long>{ 
    void deleteByB(BEtt b); 
} 

fand ich eine andere Art und Weise.

mit QueryDslRepositorySupport.

@Repository("BRepository") 
public class BExtendRepositoryImpl extends QueryDslRepositorySupport implements BExtendRepository{ 
public BExtendRepositoryImpl() { 
    super(BEtt.class); 
} 

@Override 
public void deleteByAId(long aId) { 
    QBEtt b = QBEtt.bEtt; 
    JPQLQuery query = from(b); 
    query.where(b.a.aId.eq(aId)); 
} 

}


Aber ich will JpaRepository verwenden. Kann ich meine Entität löschen, indem ich die Entity's PK mit JpaRepository verwende?

Ich hoffe, hier einen Tipp zu bekommen. Vielen Dank! Einen schönen Tag noch! :-)

+0

Welche Art von Beziehung haben die Entitäten A und B? Eins-zu-eins oder eins-zu-viele? – Simon

Antwort

0

Unter der Annahme, dass Ihr Unternehmen A Order und B Customer und sie teilen eine Eins-zu-viele-Beziehung, wo Order.customer verweist auf das damit verbundene Kundenobjekt und Customer.id den PK des Kunden ist, Sie in der Lage sein sollten erreichen Sie dies wie folgt:

@Repository 
public OrderRepository extends JpaRepository<Order, Long> { 
    Long deleteByCustomer_Id(String id); 
} 

Aber der Unterstrich ist optional.

+0

Vielen Dank für Ihre Antwort! Ich hoffe, du hast einen schönen Tag! :-) –