2017-10-22 27 views
0

我有這個類,我有一個構造函數:java.lang.NoSuchMethodException:com ...員工。 <init>()

@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.<init>()

形式是這樣的:

<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後,適應了代碼爲我的需求,但我無法得到這個工作:(

那麼,它爲什麼會抱怨一個默認的構造函數,如果已經有一個?

而且:我該如何解決這個問題?

回答

2
@field: ManyToOne(targetEntity = District::class) 
var district : District?, 
@field: ManyToOne(targetEntity = Company::class) 
var company : Company?, 

這些沒有默認值,所以沒有生成空構造函數。

= null添加到每個。

+0

聖牛,我錯過了!非常感謝你! – Alejandro