Spring Data JPA с базой данных H2: подключение двух объектов в разных проектах

#java #spring #hibernate #spring-boot #spring-data-jpa

#java #spring #переход в спящий режим #spring-boot #spring-data-jpa

Вопрос:

У меня есть два проекта Eclipse с двумя объектами (Customer и Cart).

Проект CustomerMicroService:

     @Entity
    public class Customer {

        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        private int customerId;

        private String name;
        private String address;

        @OneToOne
        @JoinColumn(name = "cart_test")
        private Cart cart;

        public Customer(Cart cart) {
           this.cart = cart;
  

Project CartMicroService:

 @Entity
public class Cart {

    @Id
    @JoinColumn(name = "cart_id")
    private int cartId;

    private Map<Integer, CartItem> cartItems;
    private int numberOfArticles;

    public Cart() {
        cartItems = new HashMap<Integer, CartItem>();
        numberOfArticles = 0;
    }
  

Я получаю эту ошибку:

 org.hibernate.AnnotationException: @OneToOne or @ManyToOne on de.leuphana.customer.component.behaviour.Customer.cart references an unknown entity: de.leuphana.cart.component.behaviour.Cart
  

Как мне подключить эти два объекта? Я ожидаю чего-то подобного в своей базе данных:

 <item>
  <customerId>1000</customerId>
  <name>name</name>
  <address>email@email.com</address>
  <cart_test>Cart</cart_test>
  <!-- OR something like -->
  <cart_id>CartId</cart_id>
  

Это мое приложение Spring Boot:

 @SpringBootApplication
public class CustomerApplication {

    public static void main(String[] args) {
        SpringApplication.run(CustomerApplication.class, args);
    }

}
  

Ответ №1:

Вы не можете этого сделать. Hibernate ожидает, что используемая модель будет сопоставлена. Сопоставление этого в другом проекте не выдает никакой ошибки внешнему миру, поскольку его можно запечатать любым способом.

Обходным путем было бы определить вашу модель в каком-либо модуле, который был бы общим для ваших проектов.