Отношения между приложением @Entity in Spring с микросервисами и одной базой данных - PullRequest
0 голосов
/ 01 апреля 2020

Я создаю Spring приложение с 2-мя микроуслугами (при запуске, чтобы расширить позже) и ОДНА база данных .

В первом микросервисе, назовем его BoardService У меня есть @Entity класс Board. Во втором микросервисе давайте назовем это MessageService У меня есть @Entity класс Message.

Я хочу создать отношение Board - @OneToMany - Message. К одному Board может быть прикреплено несколько Message. Проблема заключается в том, что оба объекта находятся в отдельных пакетах, используемых в отдельных микросервисах.

Когда я запускаю MessageService я получаю ошибку:

@OneToOne or @ManyToOne on my.package.messages.model.Message.board references an unknown entity: my.package.board.model.Carrier

Вот как выглядят эти классы:

@Entity
@Table(name = "boards")
class Board(
  @Id
  val id: Int,

  val name: String,

  @OneToMany(targetEntity = Message::class, mappedBy = "board", cascade = [CascadeType.ALL])
  var messages: Set<Message>? = null
)
@Entity
@Table(name = "messages")
class Message(
  val name: String,

  val content: String,

  @ManyToOne(targetEntity = Board::class)
  @JoinColumn(name = "board_id")
  val board: Board? = null,

  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  val id: Long? = null
)

Я пытался добавить Board сущность ко второму микросервису, используя EntityScan, но ошибка остается той же.

@EnableEurekaClient
@EnableFeignClients
@EntityScan(basePackageClasses = [Board::class])
@Import(WebMvcConfig::class, WebSecurityConfig::class)
@SpringBootApplication
class MessagesMain

Это даже хороший подход для создания отношений между сущностями в разных микросервисах?

Если нет, то как мне назначить Message на Board? Должен ли я сохранить в messages таблице board_id? Но затем, если я получаю список сообщений в BoardService (например, я хочу показать клиенту список досок с прикрепленными к ним сообщениями), мне придется вручную загружать объект базы данных Board в каждый board_id в возвращаемых сообщениях. список от MessageService. Это выглядит очень неудобно, особенно когда я использую реляционную базу данных.

Я пытался найти правильный подход, но меня действительно смущают все сообщения и статьи, которые я уже прочитал.

...