3 回答

TA貢獻1875條經驗 獲得超3個贊
同意奧利弗關于長且不可讀的方法名,但是盡管如此,并且為了論證,您可以通過使用等效性來獲得所需的結果
A /\ (B \/ C) <=> (A /\ B) \/ (A /\ C)
A and (B or C) <=> (A and B) or (A and C)
因此,在您的情況下,它應如下所示:
findByPlan_PlanTypeInAndSetupStepIsNullOrPlan_PlanTypeInAndStepupStepIs(...)

TA貢獻1811條經驗 獲得超6個贊
選項1:您可以使用命名查詢(請參閱使用JPA命名查詢):
@Entity
@NamedQuery(name = "User.findByEmailAddress",
query = "select u from User u where u.emailAddress = ?1")
public class User {
}
public interface UserRepository extends JpaRepository<User, Long> {
User findByEmailAddress(String emailAddress);
}
Option2:用于@Query編寫您的自定義查詢(請參閱使用@Query)
public interface UserRepository extends JpaRepository<User, Long> {
@Query("select u from User u where u.emailAddress = ?1")
User findByEmailAddress(String emailAddress);
}

TA貢獻1815條經驗 獲得超13個贊
當前是不可能的,將來也不會。我認為即使有可能,對于更復雜的查詢,您也不想人為地將所有查詢復雜性壓縮為方法名稱。不僅因為難以理解查詢中實際發生的事情,而且還因為從客戶端代碼的角度出發:您想要使用可表達的方法名稱,在簡單的情況下,findByUsername(…)
您可以使用它來創建查詢。
對于更復雜的內容,您只需將查詢復雜度提高到調用代碼中,建議改為使用可讀的方法名稱,該名稱以語義方式表達查詢的作用,并使用@Query
,命名查詢等將查詢復雜度保留在手動聲明的查詢中。
添加回答
舉報