【问题标题】:java.lang.NoSuchMethodException: com...Employee.<init>()java.lang.NoSuchMethodException: com...Employee.<init>()
【发布时间】:2017-10-22 00:30:32
【问题描述】:

我有这个类,我有一个构造函数:

@Entity
data class Employee(
    @field: Id
    @field:GeneratedValue var id : Long = 0,
    var username : String = "",
    var password : String ="",
    var name : String ="",
    var lastName: String ="",
    var phone : String="",
    var email : String ="",
    var sex : String ="",
    var active : Boolean = false,
    @field: ManyToOne(targetEntity = District::class)
    var district : District?,
    @field: ManyToOne(targetEntity = Company::class)
    var company : Company?,
    var picture:String="",
    var resetPasswordCode:String="",
    // código que se le envía al usuario en el momento que crea
    // la cuenta, deberá abrir en enlace del correo para activarla
    // de ahí que "active" sea false.
    var activationCode : String="",
    var enabled : Boolean = true,
    var accountNonExpired: Boolean = true,
    var credentialsNonExpired: Boolean = true,
    var accountNonLocked : Boolean = true,
    @field: OneToMany(targetEntity = Roles::class) var roles :MutableSet<Roles> = mutableSetOf())

{
    fun toUser() : User
    {
        val authorities = mutableSetOf<GrantedAuthority>()
        roles.forEach{authorities.add(SimpleGrantedAuthority(it.role))}
        return User(username,password,enabled,accountNonExpired,credentialsNonExpired,accountNonLocked, authorities)
    }
}

我有一个控制器方法并且为了测试,我只是打印“保存”文本(因为我遇到了这个问题,(对我来说)继续下去没有意义):

@RequestMapping(method = arrayOf(RequestMethod.POST))
fun doPost(employee: Employee) : String {
    println("saving!!!")
    // employeeService.save(employee)
    return "redirect:/display"
}

发送表单时,我收到此错误:

java.lang.NoSuchMethodException: com.almasoft.facturapp.entities.Employee.&lt;init&gt;()

表格是这样的:

<form th:action="@{/register}" method="post" role="form" 
    th:object="${employee}">
    <legend>Register a User</legend>

    <div class="form-group">
        <label for="username">User Name</label>
        <input type="text" class="form-control" name="username" id="username" th:field="*{username}"></input>
    </div>

    <div class="form-group">
        <label for="password">Password</label>
        <input type="password" class="form-control" name="password" id="password" th:field="*{password}"></input>
    </div>

    <button type="submit" class="btn btn-primary">Submit</button>
</form>

我正在关注this 的帖子并根据我的需要调整代码,但我无法让它工作:(

那么,如果已经有默认构造函数,为什么还要抱怨呢?

还有:我该如何解决这个问题?

【问题讨论】:

    标签: spring spring-boot kotlin


    【解决方案1】:
    @field: ManyToOne(targetEntity = District::class)
    var district : District?,
    @field: ManyToOne(targetEntity = Company::class)
    var company : Company?,
    

    这些没有默认值,因此不会生成空构造函数。

    为每个添加= null

    【讨论】:

      猜你喜欢
      • 2016-04-15
      • 2013-08-04
      • 2017-03-26
      • 1970-01-01
      • 2017-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多