0
我試圖讓使用微服務架構簡單春季啓動的Web應用程序。如何在彈簧啓動時使不同微服務中的兩個實體之間發生關係?
我有兩個微服務與實體如下定義:
Microservice 1 :
@Entity
public class Article {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String title;
private String Content;
}
和
Microservice 2 :
@Entity
public class Tag {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String title;
}
現在我想有很多要在這兩個實體之間的許多關係在我網關 。
我曾試圖用如下假死客戶端:
Gateway :
@FeignClient(value = "article-service")
public interface ArticleClient {
@RequestMapping(value = "/articles/", method = RequestMethod.GET)
Set<Article> getArticleById(@RequestParam("id") Long id);
}
@FeignClient(value = "tag-service")
public interface TagClient {
@RequestMapping(value = "/tags/", method = RequestMethod.GET)
Tag getTagById(@RequestParam("id") Long id);
}
並確定文章和標籤實體在我網關這樣的:
Gateway :
@JsonIgnoreProperties(ignoreUnknown = true)
public class Entry {
private Long id;
private String title;
private String Content;
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name = "article_tag",
joinColumns = @JoinColumn(name = "article_id", referencedColumnName = "id"),
inverseJoinColumns = @JoinColumn(name = "tag_id",
referencedColumnName = "id"))
private Set<Tag> tags;
}
@JsonIgnoreProperties(ignoreUnknown = true)
public class Tag {
private Long id;
private String title;
@ManyToMany(mappedBy = "tags")
private Set<Article> articles;
}
我有一個表命名article_tag在我的數據庫(的Postgres)。
現在,我怎麼定義的網關我的倉庫? 如何編寫getArticlesByTagId()或getTagsByArticleId()函數? 我做任何我所能,使這個關係的工作,但我認爲他們不會互相:)相處
據我所知,你沒有定義關係(因爲你不會有任何)。取而代之的是,你的網關只包含'article_tag'的實體,你必須自己映射'article_id'和'tag_id'字段。如果您想檢索特定標籤的文章,請查找'article_id'並將它們傳遞給文章microservice(REST調用?)以檢索完整的文章。 – g00glen00b