Ненулевые отношения в первичном конструкторе сущности - PullRequest
0 голосов
/ 13 февраля 2019

Я создаю приложение с помощью Spring Data Neo4j и Kotlin.Я использую стандартный способ kotlin для объявления сущностей (класс с основным конструктором).Все работало нормально, пока я не захотел создать простые, обязательные отношения между моими сущностями.Когда я звоню .findAll() в моем хранилище, я получаю Parameter specified as non-null is null: method ...model.Campaign.<init>, parameter client.

Я пытался вызвать .findAll(depth = 1) для загрузки связанных сущностей в мою сущность, но это не помогло.

@NodeEntity
class User(var name: String)
{
    @Id @GeneratedValue
    var id: Long? = null
}

@NodeEntity
class Campaign(
    var name: String,
    @Relationship(type = "CLIENT", direction = Relationship.OUTGOING)
    var client: User)
{
    @Id @GeneratedValue
    var id: Long? = null
}

interface CampaignRepository : Neo4jRepository<Campaign, Long>

//...

campaignRepository.save(Campaign("C1", user))

campaignRespository.findAll()

Конечно, я могу просто объявить var client: User? как обнуляемый и всеЭто хорошо.Но, поскольку в моей модели у меня будут как обязательные, так и необязательные отношения, я хочу знать, есть ли способ преодолеть это.

1 Ответ

0 голосов
/ 13 февраля 2019

Я нашел решение, но не очень элегантное:

@NodeEntity
class Campaign(
    var name: String,
    client: User?)
{
    @Id @GeneratedValue
    var id: Long? = null

    @Relationship(type = "CLIENT", direction = Relationship.OUTGOING)
    lateinit var client: User

    init
    {
        client?.let { this.client = it }
    }
}
...