3 回答

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

TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超6個(gè)贊
選項(xiàng)1:您可以使用命名查詢(xún)(請(qǐng)參閱使用JPA命名查詢(xún)):
@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編寫(xiě)您的自定義查詢(xún)(請(qǐng)參閱使用@Query)
public interface UserRepository extends JpaRepository<User, Long> {
@Query("select u from User u where u.emailAddress = ?1")
User findByEmailAddress(String emailAddress);
}

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超13個(gè)贊
當(dāng)前是不可能的,將來(lái)也不會(huì)。我認(rèn)為即使有可能,對(duì)于更復(fù)雜的查詢(xún),您也不想人為地將所有查詢(xún)復(fù)雜性壓縮為方法名稱(chēng)。不僅因?yàn)殡y以理解查詢(xún)中實(shí)際發(fā)生的事情,而且還因?yàn)閺目蛻?hù)端代碼的角度出發(fā):您想要使用可表達(dá)的方法名稱(chēng),在簡(jiǎn)單的情況下,findByUsername(…)
您可以使用它來(lái)創(chuàng)建查詢(xún)。
對(duì)于更復(fù)雜的內(nèi)容,您只需將查詢(xún)復(fù)雜度提高到調(diào)用代碼中,建議改為使用可讀的方法名稱(chēng),該名稱(chēng)以語(yǔ)義方式表達(dá)查詢(xún)的作用,并使用@Query
,命名查詢(xún)等將查詢(xún)復(fù)雜度保留在手動(dòng)聲明的查詢(xún)中。
添加回答
舉報(bào)