条件不起作用的 JPA createQuery
JPA createQuery where condition does not work
我正在尝试使用 JPA 从数据库中获取记录。但是,我能够在数据库中插入记录,甚至可以使用 class EntityManager.
的 createQuery 方法获取所有记录
但在下面的情况下,我不明白为什么 where 子句中的条件不起作用。
请帮我解决一下。
POJO class :
@Entity
@Table(name = "frameworks_filter")
public class FilteredFrameworksDbStructure {
@Id
@Column(name="id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@Column(name = "regular_name")
private String regularName;
@Column(name = "component_name")
private String componentName;
@Column(name = "component_owner")
private String componentOwner;
@Column(name = "frameworks")
private String frameworks;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getRegularName() {
return regularName;
}
public void setRegularName(String regularName) {
this.regularName = regularName;
}
public String getComponentName() {
return componentName;
}
public void setComponentName(String componentName) {
this.componentName = componentName;
}
public String getComponentOwner() {
return componentOwner;
}
public void setComponentOwner(String componentOwner) {
this.componentOwner = componentOwner;
}
public String getFrameworks() {
return frameworks;
}
public void setFrameworks(String frameworks) {
this.frameworks = frameworks;
}
}
DAO class 方法:
public List<FilteredFrameworksDbStructure> getFilteredFrameworks(String regularName) {
EntityManager entityManager = entityManagerFactory.createEntityManager();
List<FilteredFrameworksDbStructure> filteredFrameworksDbStructureList = entityManager
.createQuery("from FilteredFrameworksDbStructure F where F.regularName = :regular", FilteredFrameworksDbStructure.class)
.setParameter("regular", regularName)
.getResultList();
return filteredFrameworksDbStructureList;
}
问题:where 子句中的条件不起作用。它只是获取所有记录,而不考虑提供的 regularName。
此致,
帕拉格温丘卡
为什么不使用 JpaRepository
或 CrudRepository
来获取结果?查看本教程 here and here,了解如何使用它们。
并且您可以使用 where 子句。请参阅下面的示例存储库,您可以使用它来获得与 entityManager
相同的结果
public interface FilteredFrameworksDbStructureRepo extends JpaRepository<FilteredFrameworksDbStructure , Integer>{
List<FilteredFrameworksDbStructure> findAllByRegularName(String regularName)
}
请注意,您必须将 id
成员变量从 int
更改为 Integer
我正在尝试使用 JPA 从数据库中获取记录。但是,我能够在数据库中插入记录,甚至可以使用 class EntityManager.
的 createQuery 方法获取所有记录但在下面的情况下,我不明白为什么 where 子句中的条件不起作用。
请帮我解决一下。
POJO class :
@Entity
@Table(name = "frameworks_filter")
public class FilteredFrameworksDbStructure {
@Id
@Column(name="id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@Column(name = "regular_name")
private String regularName;
@Column(name = "component_name")
private String componentName;
@Column(name = "component_owner")
private String componentOwner;
@Column(name = "frameworks")
private String frameworks;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getRegularName() {
return regularName;
}
public void setRegularName(String regularName) {
this.regularName = regularName;
}
public String getComponentName() {
return componentName;
}
public void setComponentName(String componentName) {
this.componentName = componentName;
}
public String getComponentOwner() {
return componentOwner;
}
public void setComponentOwner(String componentOwner) {
this.componentOwner = componentOwner;
}
public String getFrameworks() {
return frameworks;
}
public void setFrameworks(String frameworks) {
this.frameworks = frameworks;
}
}
DAO class 方法:
public List<FilteredFrameworksDbStructure> getFilteredFrameworks(String regularName) {
EntityManager entityManager = entityManagerFactory.createEntityManager();
List<FilteredFrameworksDbStructure> filteredFrameworksDbStructureList = entityManager
.createQuery("from FilteredFrameworksDbStructure F where F.regularName = :regular", FilteredFrameworksDbStructure.class)
.setParameter("regular", regularName)
.getResultList();
return filteredFrameworksDbStructureList;
}
问题:where 子句中的条件不起作用。它只是获取所有记录,而不考虑提供的 regularName。
此致, 帕拉格温丘卡
为什么不使用 JpaRepository
或 CrudRepository
来获取结果?查看本教程 here and here,了解如何使用它们。
并且您可以使用 where 子句。请参阅下面的示例存储库,您可以使用它来获得与 entityManager
public interface FilteredFrameworksDbStructureRepo extends JpaRepository<FilteredFrameworksDbStructure , Integer>{
List<FilteredFrameworksDbStructure> findAllByRegularName(String regularName)
}
请注意,您必须将 id
成员变量从 int
更改为 Integer