簡體   English   中英

如何在Spring-data JPA中的名稱中使用下划線“_”映射類屬性

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM