Persist java.net.URI Объект в виде строки в MongoDB - PullRequest
0 голосов
/ 08 октября 2019

Я сохраняю экземпляр java.net.URI в базе данных Mongo в приложении Spring Boot.

Например, учитывая следующий класс данных Kotlin:

data class MyData(id: String, uri: URI)

Я сохраняюобъект в базе данных Mongo, и хотите, чтобы он был сохранен в виде простой строки, например, path/to/file.txt. Однако при использовании этого примера строки моя база данных имеет следующее значение:

{
   "id": "abcde1234",
   "uri": {
    "port": -1,
    "path": "path/to/file.txt",
    "schemeSpecificPart": "path/to/file.txt",
    "hash": 0,
    "string": "path/to/file.txt"
  }
}

Я настаиваю на следующем (показаны только соответствующие части):

import org.springframework.data.repository.CrudRepository

interface MyRepo: CrudRepository<Campaign, String>

@Service
class MyService(val myRepo: MyRepo) {
  fun create(myData: MyData) = myRepo.save(myData)
}

Есть идеи?

1 Ответ

0 голосов
/ 10 октября 2019

Использование Spring Boot 2.2.0.M2 (который должен быть освобожден 16 октября ):

import org.springframework.data.mongodb.core.mapping.Field
import org.springframework.data.mongodb.core.mapping.FieldType.STRING


data class MyData(
        val id: String,

        @Field(targetType = STRING)
        val uri: URI
)

В поле id также может быть задан конкретный тип данных:

import org.springframework.data.mongodb.core.mapping.Field
import org.springframework.data.mongodb.core.mapping.FieldType.STRING
import org.springframework.data.mongodb.core.mapping.MongoId
import java.util.UUID

data class MyData(
        @MongoId(targetType = STRING)
        val id: UUID,

        @Field(targetType = STRING)
        val uri: URI
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...