gpt4 book ai didi

java - 如何在 Spring-data JPA 的名称中使用下划线 "_"映射类属性

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:46:53 27 4
gpt4 key购买 nike

带有 Spring-Data 的 JPA 是否存在名称中带有下划线“_”的属性的问题?这是我扩展 JpaRepository 的接口(interface):

public interface I_My_Class extends JpaRepository<MyClass, Long> {

public MyClass findByA_my_table_id (Long headerId);
}

此行:findByA_my_table_id (Long headerId); 给出此错误:

Invalid derived query! No property "a" found for type MyClass !

如果我将方法命名为 public MyClass findBya_my_table_id (Long headerId); 它会给我同样的错误。如果我命名属性 amytableid 不带下划线,我不会得到错误,但如果我这样做,以后就不容易阅读了。这是我具有表属性的类:

@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 在实体属性名称中使用下划线会有问题。 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);

您可以找到许多解释如何编写自定义查询的教程和网站。

关于java - 如何在 Spring-data JPA 的名称中使用下划线 "_"映射类属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25856785/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com