Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
NotReadablePropertyException:无效属性';id';bean类[java.util.LinkedHashMap]_Java_Spring_Spring Mvc_Spring Ioc - Fatal编程技术网

NotReadablePropertyException:无效属性';id';bean类[java.util.LinkedHashMap]

NotReadablePropertyException:无效属性';id';bean类[java.util.LinkedHashMap],java,spring,spring-mvc,spring-ioc,Java,Spring,Spring Mvc,Spring Ioc,我正试图在springMVC应用程序中创建一个抽象服务。我的数据流*完美地通过我的层,但我的持久性(抽象)无法找到保存/删除/更新数据库的方法,以下是类: abstract class BaseServiceImpl<T, ID extends Serializable> implements BaseService<T, ID> { protected abstract BaseRepository<T, ID> getRepository(); pr

我正试图在springMVC应用程序中创建一个抽象服务。我的数据流*完美地通过我的层,但我的持久性(抽象)无法找到保存/删除/更新数据库的方法,以下是类:

abstract class BaseServiceImpl<T, ID extends Serializable>
 implements BaseService<T, ID> {

protected abstract BaseRepository<T, ID> getRepository();

private BaseRepository<T, ID> repository;

public BaseServiceImpl(BaseRepository<T, ID> repository){
   this.repository = repository;
}

public List<T> findAll(){
    return getRepository().findAll();
}

public T find(ID id){
    return getRepository().findOne(id);
}

public T save(T persisted){
    return this.repository.save(persisted);
}

public void delete(ID id){
    getRepository().delete(id);
}

public long count(){
    return getRepository().count();
}

public boolean exists(ID id){
    return getRepository().exists(id);
}  
}
//--

//--

@NoRepositoryBean
公共接口库
扩展存储库{
列出findAll();
长计数();
作废删除(ID);
T保存(ts);
T findOne(ID);
存在布尔值(ID);
作废删除(T删除);
}
//--

@存储库
公共接口医学知识库
扩展BaseRepository{
}
我收到500个状态错误,我的tocatlog显示以下消息:

严重:路径为[/tavalendo]的上下文中Servlet[TavalendDispatcherservlet]的Servlet.service()引发异常[请求处理失败;嵌套异常为org.springframework.beans.NotReadablePropertyException:bean类[java.util.LinkedHashMap]的属性“id”无效]:回退访问期间找不到属性字段!]根本原因 org.springframework.beans.NotReadablePropertyException:bean类[java.util.LinkedHashMap]的属性“id”无效:在回退访问期间找不到属性的字段! 位于org.springframework.data.util.DirectFieldAccessFallbackBeanWrapper.getPropertyValue(DirectFieldAccessFallbackBeanWrapper.java:56) 位于org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) 位于org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956) 位于org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) 位于org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423) 位于org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079) 位于org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625) 位于org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316) 位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 位于org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 运行(Thread.java:745)


有人能解释发生了什么吗?

春天似乎找不到医学的id领域:

Invalid property 'id' of bean class [java.util.LinkedHashMap]: Could not find field for property during fallback access!]

实际上,Medicine似乎没有
id
字段,因此需要添加它

Spring似乎找不到医学的id领域:

Invalid property 'id' of bean class [java.util.LinkedHashMap]: Could not find field for property during fallback access!]
实际上,Medicine似乎没有
id
字段,因此需要添加它

1)将对象转换为字符串

private String jsonObjectToString( T value ) throws AppException
{

    try
    {
        ObjectWriter ow = new ObjectMapper().writer().withDefaultPrettyPrinter();
        String strJson = ow.writeValueAsString( value );
        return strJson;
    }
    catch ( JsonProcessingException e )
    {
        LOG.error( e.getMessage(), e );
        throw new AppException( e );
    }

}
2) 将字符串转换为对象

@SuppressWarnings( "unchecked" )
private T jsonStringToObject( String strJson, Class<?> clazz ) throws AppException
{

    try
    {
        ObjectMapper mapper = new ObjectMapper();
        T object = ( T ) mapper.readValue( strJson, clazz );
        return object;
    }
    catch ( IOException e )
    {
        LOG.error( e.getMessage(), e );
        throw new AppException( e );
    }

}
@SuppressWarnings(“未选中”)
私有TJSonStringToObject(字符串strJson,类clazz)抛出AppException
{
尝试
{
ObjectMapper mapper=新的ObjectMapper();
T object=(T)mapper.readValue(strJson,clazz);
返回对象;
}
捕获(IOE异常)
{
LOG.error(e.getMessage(),e);
抛出新的AppException(e);
}
}
3) 转换泛型T以重置对象引用

private void yourMethod( CommonRq<T> rq ) throws AppException {

   String newStrJson = jsonObjectToString( rq.getData() );
   T newEntity = jsonStringToObject( newStrJson, getEntityClass() );
   T result = this.mantenimientoService.create( newEntity );

}
private void yourMethod(CommonRq rq)抛出AppException{
字符串newStrJson=jsonObjectToString(rq.getData());
T newEntity=jsonStringToObject(newStrJson,getEntityClass());
T result=this.mantenimientoService.create(newEntity);
}
这对我来说很有用….

1)将对象转换为字符串

private String jsonObjectToString( T value ) throws AppException
{

    try
    {
        ObjectWriter ow = new ObjectMapper().writer().withDefaultPrettyPrinter();
        String strJson = ow.writeValueAsString( value );
        return strJson;
    }
    catch ( JsonProcessingException e )
    {
        LOG.error( e.getMessage(), e );
        throw new AppException( e );
    }

}
2) 将字符串转换为对象

@SuppressWarnings( "unchecked" )
private T jsonStringToObject( String strJson, Class<?> clazz ) throws AppException
{

    try
    {
        ObjectMapper mapper = new ObjectMapper();
        T object = ( T ) mapper.readValue( strJson, clazz );
        return object;
    }
    catch ( IOException e )
    {
        LOG.error( e.getMessage(), e );
        throw new AppException( e );
    }

}
@SuppressWarnings(“未选中”)
私有TJSonStringToObject(字符串strJson,类clazz)抛出AppException
{
尝试
{
ObjectMapper mapper=新的ObjectMapper();
T object=(T)mapper.readValue(strJson,clazz);
返回对象;
}
捕获(IOE异常)
{
LOG.error(e.getMessage(),e);
抛出新的AppException(e);
}
}
3) 转换泛型T以重置对象引用

private void yourMethod( CommonRq<T> rq ) throws AppException {

   String newStrJson = jsonObjectToString( rq.getData() );
   T newEntity = jsonStringToObject( newStrJson, getEntityClass() );
   T result = this.mantenimientoService.create( newEntity );

}
private void yourMethod(CommonRq rq)抛出AppException{
字符串newStrJson=jsonObjectToString(rq.getData());
T newEntity=jsonStringToObject(newStrJson,getEntityClass());
T result=this.mantenimientoService.create(newEntity);
}

这对我来说很有效……

我最近遇到了类似的问题,在尝试创建/更新我的资源时遇到了类似的异常:

bean类[org.springframework.hateoas.CollectionModel]的属性“id”无效:在回退访问期间找不到属性的字段

仔细查看后,我似乎在调用API时使用了错误的HTTP请求头(内容类型:text/uri list,而不是内容类型:application/json),因此无法对json负载进行反序列化


如果有人遇到类似的问题,只需进行共享,就可以在调试时为他们节省一些时间

我最近遇到了类似的问题,并且在尝试创建/更新资源时遇到了类似的异常:

bean类[org.springframework.hateoas.CollectionModel]的属性“id”无效:在回退访问期间找不到属性的字段

仔细查看后,我似乎在调用API时使用了错误的HTTP请求头(内容类型:text/uri list,而不是内容类型:application/json),因此无法对json负载进行反序列化


如果有人遇到类似的问题,只需分享一下,就可以在调试时为他们节省一些时间

我在JPA中使用Projection时遇到过同样的问题

错误代码:

Optional<List<AbcProj>> getData(--);
可选的getData(-);
在进行以下更改后解决:

List<AbcProj> getData(--);
List getData(-);

我在JPA中使用Projection时遇到了同样的问题

错误代码:

Optional<List<AbcProj>> getData(--);
可选的getData(-);
决议