无法从JSON String实例化类型的值;没有单字符串构造函数/工厂方法 [英] Can not instantiate value of type from JSON String; no single-String constructor/factory method

查看:111
本文介绍了无法从JSON String实例化类型的值;没有单字符串构造函数/工厂方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下实体:

@Entity
@Table(name="APLICACAO")
public class Aplicacao implements Serializable, Entidade {

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name="CD_APLICACAO")
    private Long codigo;

    @Column(name="NM_APLICACAO")
    @NotNull
    private String nome;

    @ManyToOne
    @JoinColumn(name="CD_GRUPO")
    private GrupoAplicacao grupoAplicacao;

    ....

}

还有:

@Entity
@Table(name = "GRUPO_APLICACAO")
public class GrupoAplicacao implements Serializable, Entidade {

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "CD_GRUPO")
    private Long codigo;

    @Column(name = "NM_GRUPO")
    @NotNull
    private String nome;

    @OneToMany(mappedBy = "grupoAplicacao",fetch=FetchType.EAGER)
    private List<Aplicacao> listaAplicacao;

    @OneToMany(mappedBy = "grupoAplicacao",fetch=FetchType.EAGER)
    private List<GrupoAplicacaoUsuario> listaGrupoAplicacaoUsuario;

    ....

}

我的HTML调用控制器aplicacoesCreateController,如下面的代码:

My HTML call controller "aplicacoesCreateController", like code bellow:

<div class="col-xs-12" ng-controller="aplicacoesCreateController">
    <form class="form-horizontal form-medium center" role="form" name="form" ng-submit="save()">
        <div class="form-group">
            <label for="nome" class="col-xs-4 control-label">Nome</label>
            <div class="col-xs-8">
                <input type="text" class="form-control input-sm" id="nome" placeholder="Nome" required ng-model="aplicacao.nome">
            </div>
        </div>
        <div class="form-group">
            <label for="nome" class="col-xs-4 control-label">Nome</label>
            <div class="col-xs-8">
                <select class="form-control" required ng-model="aplicacao.grupoAplicacao">
                        <option ng-repeat="grupo in grupos" value="{{ grupo }}">
                            {{ grupo.nome }}
                        </option>
                </select>
            </div>
        </div>
        <div class="form-group">
            <div class="col-xs-offset-4 col-xs-8">
            <button type="submit" class="btn btn-lg btn-size-md">Salvar</button>
            </div>
        </div>
    </form>
</div>

我的控制器JavaScript:

And my Controller JavaScript:

app.controller('aplicacoesCreateController', ['$scope','aplicacoesService','$location','reloadService','gruposService',
function ($scope,aplicacoesService,$location,reloadService,gruposService) {
    $scope.grupos = gruposService.list();
    $scope.save = function () {
        aplicacoesService.create($scope.aplicacao);
        reloadService.on('#/aplicacoes');
    };
}]);

和服务JavaScript:

And Services JavaScript:

app.factory('gruposService', ['$resource', function ($resource) {

    return $resource('resources/grupo-aplicacao', {}, {
        'list': { method: 'GET', isArray: true }
    });

}]);

和其他服务:

app.factory('aplicacoesService', ['$resource', function ($resource) {

    return $resource('resources/aplicacao', {}, {
        'list': { method: 'GET', isArray: true },
        'create': { method: 'POST' }
    });

}]);

当插入aplicacao实体时,会显示以下错误:

When insert aplicacao entity, is show me the following error:

Caused by: org.codehaus.jackson.map.JsonMappingException: Can not instantiate value of type [simple type, class br.com.techpeople.grape.entity.GrupoAplicacao] from JSON String; no single-String constructor/factory method (through reference chain: br.com.techpeople.grape.entity.Aplicacao["grupoAplicacao"])

你能帮我解决这个错误吗?

Could you help me with this error?

推荐答案

错误告诉你需要GrupoAplicacao类中的构造函数方法,它接受一个字符串。

The error is telling you that you need a constructor method in your GrupoAplicacao class which accepts a string.

@Entity
@Table(name = "GRUPO_APLICACAO")
public class GrupoAplicacao implements Serializable, Entidade {

....

    GrupoAplicacao(String stringJSON){
        setters;
    }

}

这篇关于无法从JSON String实例化类型的值;没有单字符串构造函数/工厂方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆