- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试使用 JpaRepository 获取查询结果,但它对我不起作用:
public interface PeticionRepository extends JpaRepository<Peticion, Long> {
@Query(value = "select peticion from Peticion peticion where (peticion.codigo like CONCAT(?1, '%') or "
+ "peticion.contacto.direccionGeneral.nombre like CONCAT(?1, '%') or peticion.contacto.poa like CONCAT(?1, '%') or "
+ "peticion.proyecto.nombre like CONCAT (?1, '%') or peticion.datosAdicionales.estado.nombre like CONCAT(?1, '%'))")
List<Peticion> findByText(String texto);
List<Peticion> findByFilter(String unidad, String nombreIniciativa, String codigo,
LocalDate fechaConsejeroDFormat, LocalDate fechaConsejeroHFormat);
}
在其他类中,我需要覆盖函数 findByFilter
,我将在其中创建查询:
public abstract class JpaPeticionRepository implements PeticionRepository {
@PersistenceContext(name = "ExterroPU")
private EntityManager em;
public void setEm(EntityManager em) {
this.em = em;
}
public List<Peticion> findByFilter(String unidad, String nombreIniciativa, String codigo,
LocalDate fechaConsejeroDFormat, LocalDate fechaConsejeroHFormat) {
List<Peticion> peticiones = new ArrayList<Peticion>();
String consulta = "select peticion from Peticion peticion ";
if(unidad!=null || nombreIniciativa!=null || codigo!=null || fechaConsejeroDFormat!=null || fechaConsejeroHFormat!=null){
consulta=consulta+" where ";
}
if(unidad!=null){
consulta = consulta+" and peticion.contacto.poa ="+unidad;
}
if(nombreIniciativa!=null){
consulta = consulta+" and peticion.proyecto.nombre ="+nombreIniciativa;
}
if(codigo!=null){
consulta = consulta+" and peticion.codigo ="+codigo;
}
if(fechaConsejeroDFormat!=null){
consulta = consulta+" and peticion.datosAdicionales.firmaConsejero<="+fechaConsejeroDFormat;
}
if(fechaConsejeroHFormat!=null){
consulta = consulta+" and peticion.datosAdicionales.firmaConsejero>="+fechaConsejeroHFormat;
}
peticiones = (List<Peticion>) em.createQuery(consulta).getResultList();
return peticiones;
}
}
此代码抛出以下异常:
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'peticionServiceImpl': Unsatisfied dependency expressed through field 'peticionRepository'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'peticionRepository': Invocation of init method failed; nested exception is org.springframework.data.mapping.PropertyReferenceException: No property filter found for type Peticion!
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:569)
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:349)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1219)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:543)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:751)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:861)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:541)
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:761)
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:371)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:315)
at com.endesa.mecenz.MecenzApp.main(MecenzApp.java:64)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49)
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'peticionRepository': Invocation of init method failed; nested exception is org.springframework.data.mapping.PropertyReferenceException: No property filter found for type Peticion!
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1583)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:545)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)
at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:207)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1128)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1056)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:566)
... 22 common frames omitted
Caused by: org.springframework.data.mapping.PropertyReferenceException: No property filter found for type Peticion!
at org.springframework.data.mapping.PropertyPath.<init>(PropertyPath.java:77)
at org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:329)
at org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:309)
at org.springframework.data.mapping.PropertyPath.from(PropertyPath.java:272)
at org.springframework.data.mapping.PropertyPath.from(PropertyPath.java:243)
at org.springframework.data.repository.query.parser.Part.<init>(Part.java:76)
at org.springframework.data.repository.query.parser.PartTree$OrPart.<init>(PartTree.java:235)
at org.springframework.data.repository.query.parser.PartTree$Predicate.buildTree(PartTree.java:373)
at org.springframework.data.repository.query.parser.PartTree$Predicate.<init>(PartTree.java:353)
at org.springframework.data.repository.query.parser.PartTree.<init>(PartTree.java:87)
at org.springframework.data.jpa.repository.query.PartTreeJpaQuery.<init>(PartTreeJpaQuery.java:63)
at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$CreateQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:103)
at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$CreateIfNotFoundQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:214)
at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$AbstractQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:77)
at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.<init>(RepositoryFactorySupport.java:435)
at org.springframework.data.repository.core.support.RepositoryFactorySupport.getRepository(RepositoryFactorySupport.java:220)
at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.initAndReturn(RepositoryFactoryBeanSupport.java:266)
at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.afterPropertiesSet(RepositoryFactoryBeanSupport.java:252)
at org.springframework.data.jpa.repository.support.JpaRepositoryFactoryBean.afterPropertiesSet(JpaRepositoryFactoryBean.java:92)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1642)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1579)
... 32 common frames omitted
我的 peticionServiceImpl 服务调用了那个方法,下面是它的代码:
public class PeticionServiceImpl implements PeticionService {
/*..
*/
@Override
public List<PeticionDTO> searchFilter( String unidad, String nombreIniciativa, String codigo,
LocalDate fechaConsejeroDFormat, LocalDate fechaConsejeroHFormat) {
return peticionMapper.peticionsToPeticionDTOs(peticionRepository.findByFilter( unidad, nombreIniciativa,
codigo, fechaConsejeroDFormat, fechaConsejeroHFormat));
}
}
Peticion bean 是:
/**
* A Peticion.
*/
@Entity
@Table(name = "peticion")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public class Peticion implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Size(max = 80)
@Column(name = "codigo", length = 80)
private String codigo;
@ManyToOne
private Resultados resultado;
@Size(max = 80)
@Column(name = "otros_resultados", length = 80)
private String otrosResultados;
@ManyToOne
private Proyecto proyecto;
@ManyToOne
private Aportacion aportacion;
@ManyToOne
private Contacto contacto;
@ManyToOne
private DatosAdicionales datosAdicionales;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Resultados getResultado() {
return resultado;
}
public Peticion resultado(Resultados resultados) {
this.resultado = resultados;
return this;
}
public String getOtrosResultados() {
return otrosResultados;
}
public void setOtrosResultados(String otrosResultados) {
this.otrosResultados = otrosResultados;
}
public void setResultado(Resultados resultados) {
this.resultado = resultados;
}
public Proyecto getProyecto() {
return proyecto;
}
public Peticion proyecto(Proyecto proyecto) {
this.proyecto = proyecto;
return this;
}
public void setProyecto(Proyecto proyecto) {
this.proyecto = proyecto;
}
public Aportacion getAportacion() {
return aportacion;
}
public Peticion aportacion(Aportacion aportacion) {
this.aportacion = aportacion;
return this;
}
public void setAportacion(Aportacion aportacion) {
this.aportacion = aportacion;
}
public Contacto getContacto() {
return contacto;
}
public Peticion contacto(Contacto contacto) {
this.contacto = contacto;
return this;
}
public void setContacto(Contacto contacto) {
this.contacto = contacto;
}
public DatosAdicionales getDatosAdicionales() {
return datosAdicionales;
}
public Peticion datosAdicionales(DatosAdicionales datosAdicionales) {
this.datosAdicionales = datosAdicionales;
return this;
}
public void setDatosAdicionales(DatosAdicionales datosAdicionales) {
this.datosAdicionales = datosAdicionales;
}
public String getCodigo() {
return codigo;
}
public void setCodigo(String codigo) {
this.codigo = codigo;
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
Peticion peticion = (Peticion) o;
if(peticion.id == null || id == null) {
return false;
}
return Objects.equals(id, peticion.id);
}
@Override
public int hashCode() {
return Objects.hashCode(id);
}
@Override
public String toString() {
return "Peticion{" +
"id=" + id +
'}';
}
}
谁能告诉我我错过了什么?
谢谢
最佳答案
您无法像您希望的那样通过简单的字符串连接在 JPQL 中创建动态查询。
您在 Spring Data JPA 中有 3 个选项:
this question 中对这 3 种方法进行了很好的概述。
从这 3 开始,您还剩下两个,因为 Spring Data JPA 无法在 Query By Example 中的 Date 字段上执行 date aritmethic(顺便说一句,我希望它可以:https://jira.spring.io/browse/DATAJPA-985)。查看 Spring Data 博客 here对于这两个选项。
关于java - 使用 JpaRepository 进行动态查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40894679/
我正在编写一个具有以下签名的 Java 方法。 void Logger(Method method, Object[] args); 如果一个方法(例如 ABC() )调用此方法 Logger,它应该
我是 Java 新手。 我的问题是我的 Java 程序找不到我试图用作的图像文件一个 JButton。 (目前这段代码什么也没做,因为我只是得到了想要的外观第一的)。这是我的主课 代码: packag
好的,今天我在接受采访,我已经编写 Java 代码多年了。采访中说“Java 垃圾收集是一个棘手的问题,我有几个 friend 一直在努力弄清楚。你在这方面做得怎么样?”。她是想骗我吗?还是我的一生都
我的 friend 给了我一个谜语让我解开。它是这样的: There are 100 people. Each one of them, in his turn, does the following
如果我将使用 Java 5 代码的应用程序编译成字节码,生成的 .class 文件是否能够在 Java 1.4 下运行? 如果后者可以工作并且我正在尝试在我的 Java 1.4 应用程序中使用 Jav
有关于why Java doesn't support unsigned types的问题以及一些关于处理无符号类型的问题。我做了一些搜索,似乎 Scala 也不支持无符号数据类型。限制是Java和S
我只是想知道在一个 java 版本中生成的字节码是否可以在其他 java 版本上运行 最佳答案 通常,字节码无需修改即可在 较新 版本的 Java 上运行。它不会在旧版本上运行,除非您使用特殊参数 (
我有一个关于在命令提示符下执行 java 程序的基本问题。 在某些机器上我们需要指定 -cp 。 (类路径)同时执行java程序 (test为java文件名与.class文件存在于同一目录下) jav
我已经阅读 StackOverflow 有一段时间了,现在我才鼓起勇气提出问题。我今年 20 岁,目前在我的家乡(罗马尼亚克卢日-纳波卡)就读 IT 大学。足以介绍:D。 基本上,我有一家提供簿记应用
我有 public JSONObject parseXML(String xml) { JSONObject jsonObject = XML.toJSONObject(xml); r
我已经在 Java 中实现了带有动态类型的简单解释语言。不幸的是我遇到了以下问题。测试时如下代码: def main() { def ks = Map[[1, 2]].keySet()
一直提示输入 1 到 10 的数字 - 结果应将 st、rd、th 和 nd 添加到数字中。编写一个程序,提示用户输入 1 到 10 之间的任意整数,然后以序数形式显示该整数并附加后缀。 public
我有这个 DownloadFile.java 并按预期下载该文件: import java.io.*; import java.net.URL; public class DownloadFile {
我想在 GUI 上添加延迟。我放置了 2 个 for 循环,然后重新绘制了一个标签,但这 2 个 for 循环一个接一个地执行,并且标签被重新绘制到最后一个。 我能做什么? for(int i=0;
我正在对对象 Student 的列表项进行一些测试,但是我更喜欢在 java 类对象中创建硬编码列表,然后从那里提取数据,而不是连接到数据库并在结果集中选择记录。然而,自从我这样做以来已经很长时间了,
我知道对象创建分为三个部分: 声明 实例化 初始化 classA{} classB extends classA{} classA obj = new classB(1,1); 实例化 它必须使用
我有兴趣使用 GPRS 构建车辆跟踪系统。但是,我有一些问题要问以前做过此操作的人: GPRS 是最好的技术吗?人们意识到任何问题吗? 我计划使用 Java/Java EE - 有更好的技术吗? 如果
我可以通过递归方法反转数组,例如:数组={1,2,3,4,5} 数组结果={5,4,3,2,1}但我的结果是相同的数组,我不知道为什么,请帮助我。 public class Recursion { p
有这样的标准方式吗? 包括 Java源代码-测试代码- Ant 或 Maven联合单元持续集成(可能是巡航控制)ClearCase 版本控制工具部署到应用服务器 最后我希望有一个自动构建和集成环境。
我什至不知道这是否可能,我非常怀疑它是否可能,但如果可以,您能告诉我怎么做吗?我只是想知道如何从打印机打印一些文本。 有什么想法吗? 最佳答案 这里有更简单的事情。 import javax.swin
我是一名优秀的程序员,十分优秀!