[英]How to map class attributes with underscores “_” in their names in Spring-data JPA
帶有Spring-Data的JPA是否存在名稱中帶有下划線“_”的屬性的問題? 這是我擴展JpaRepository
界面:
public interface I_My_Class extends JpaRepository<MyClass, Long> {
public MyClass findByA_my_table_id (Long headerId);
}
這一行: findByA_my_table_id (Long headerId);
給出了這個錯誤:
無效的派生查詢! 找不到MyClass類型的屬性“a”!
如果我將方法命名為public MyClass findBya_my_table_id (Long headerId);
它給了我同樣的錯誤。 如果我將沒有下划線的屬性命名為amytableid
我沒有得到錯誤,但是如果我這樣做,那么以后就不容易閱讀了。 這是我有table屬性的類:
@Entity
@Table(name="MyTable")
public class MyClass implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column (name="MY_TABLE_ID", nullable=false)
private Long a_my_table_id; // <-- this is the attribute that I try to put in the named query
}
是Spring Data將在Entity屬性名稱中出現下划線問題。 原因是JpaRepository只需要具有適當Java標准命名約定的屬性,例如屬性名稱應為小寫。 (如果你可以添加多個名詞以使其更具意義,那么最好使用大寫的第一個名詞除了第一個以外的名詞)
String aMyTableId;
上面的屬性會創建告訴JpaRepository來創建一個類似的方法
List<MyClass> findByAMyTableId(String aMyTableId);
這不會給出編譯錯誤。
如果您想編寫自定義查詢,則可以使用@Query API。 在這里你可以編寫面向對象的查詢。
@Query("Select myclass from MyClass myclass where myclass.aMyTableId=?1 and myclass.activeFlag='1'")
List<MyClass> findByAMyTableIdWithActiveFlagOn(String aMyTableId);
您可以找到許多解釋如何編寫自定義查詢的教程和站點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.