Q: In Kotlin, how do I have a data class I can use for an entity I have a Kotlin data class:
data class Somebody(var id: String, var created: Date, var address1: String, var address2: String,
                         var city: String, var county: String, var hitCount: Integer, var lat: Double,
                         var lon: Double, var lookupSuccessful: Boolean, var name: String,
                         var neghiborhood: String, var partialMatch: Boolean, var searchedAddress: String,
                         var state: String, var zip4: String, var zip5: String, var active: Boolean,
                         var instructions: String, var  maxValue: Integer) {

}

Thing is, I need a 0 argument constructor for this class so I can have iBatis or JPA or Jackson or somebody create one.  How do I do this and still have not nullable fields?  
Can I use not nullable fields with a data class and still have a default no-arg constructor?

A: Use the the no-arg compiler plug-in which creates an empty constructor for you.
In case you use Gradle, add this to your build.gradle file:
buildscript {
    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-noarg:$kotlin_version"
    }
}

apply plugin: "kotlin-noarg"


If you don't want to use it, you can do it like this too: You could define a secondary constructor which initializes your properties with default values.
data class Somebody(
        var id: String,
        var created: Date
        // ...
) {
    constructor() : this(
            id = "", created = Date(), address1 = "" // ...
    )
}

I would not recommend this though, because if may force you to define arbitrary default values.
