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