Я создаю 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
. Это выглядит очень неудобно, особенно когда я использую реляционную базу данных.
Я пытался найти правильный подход, но меня действительно смущают все сообщения и статьи, которые я уже прочитал.