我正在使用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?
为可空值,一切都很好。但是,由于在我的模型中,我将同时具有强制性和可选性关系,所以我想知道是否有一种方法可以克服这个问题。
答案 0 :(得分:0)
我找到了一个解决方案,但不是很好:
@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 }
}
}