具有H2数据库的Spring Data JPA:在不同项目中连接两个实体

时间:2019-03-08 19:23:52

标签: java hibernate spring-boot spring-data-jpa h2

我有两个带有两个实体(客户和购物车)的Eclipse项目。

Projekt 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 个答案:

答案 0 :(得分:1)

您不能这样做。 Hibernate希望可以映射使用过的模型。将其映射到其他项目中不会给外部世界带来任何错误,因为可以通过任何方式对其进行密封。

解决方法是在某些模块中定义模型,该模型将由您的项目共享。