mappedBy ссылается на имя класса или имя таблицы?

java hibernate jpa mapping one-to-many

1237 просмотра

1 ответ

1987 Репутация автора

Например, когда мы используем аннотацию mappedBy в @OneToMany, мы упоминали имя класса или имя таблицы?

Пример:

@Entity
@Table(name = "customer_tab")
public class Customer {
   @Id @GeneratedValue public Integer getId() { return id; }
   public void setId(Integer id) { this.id = id; }
   private Integer id;

   @OneToMany(mappedBy="customer_tab")
   @OrderColumn(name="orders_index")
   public List<Order> getOrders() { return orders; }

}

Так что из этих двух является правильным? :

  • @OneToMany (mappedBy = "customer_tab")
  • @OneToMany (mappedBy = "Клиент")?

Спасибо!

Автор: taboubim Источник Размещён: 19.07.2016 12:57

Ответы (1)


3 плюса

284386 Репутация автора

Решение

Ни один не является правильным. Из документации :

mappedBy
public abstract java.lang.String mappedBy
Поле, которому принадлежат отношения. Требуется, если отношения не являются однонаправленными.

mappedByАннотацию указывает на то, что поле , которое он маркирует принадлежит другой стороне отношений, в вашем примере с другой стороны отношения один-ко-многим. Я не знаю точно, какова ваша схема, но следующие определения классов имеют смысл:

@Entity
@Table(name = "customer_tab")
public class Customer {
    @OneToMany(mappedBy="customer")
    @OrderColumn(name="orders_index")
    public List<Order> getOrders() { return orders; }

}

@Entity
public class Order {
    @ManyToOne
    @JoinColumn(name = "customerId")
    // the name of this field should match the name specified
    // in your mappedBy annotation in the Customer class
    private Customer customer;
}
Автор: Tim Biegeleisen Размещён: 19.07.2016 01:32
Вопросы из категории :
32x32