Отображение многих объектов с использованием play GenericModel

#hibernate #jpa #sybase #jpa-2.0 #playframework

#переход в спящий режим #jpa #sybase #jpa-2.0 #playframework

Вопрос:

Я пытаюсь подключиться к существующей базе данных Sybase, используя Play Framework JPA.

 
@Entity
@Table(name="trade")
public class Trade extends GenericModel
{
    @Id
    @Column(name="SYB_IDENTITY_COL", nullable=false, precision=10)
    public long sybIdentityCol;
    @Column(name="trade_number", nullable=false, precision=18)
    public long tradeNumber;
    @Column(name="trade_price", nullable=false, precision=16)
    public double tradePrice;
        .
        .
        .
    @ManyToOne
    @JoinColumn(name="book_id", referencedColumnName="SYB_IDENTITY_COL")
    public Book book;
}
@Entity
@Table(name="book")
public class Book extends GenericModel
 {
        @Id
        @Column(name="SYB_IDENTITY_COL", nullable=false, precision=10)
        public long sybIdentityCol;
        @Column(name="book_code", nullable=false, length=4)
        public String bookCode;
        .
        .
        .
        .
}
  

JVM зависает, когда я вызываю следующую функцию из контроллера:

        Trade trade = Trade.findById(209115258L);
  

Но все работает нормально, когда я удаляю сопоставление ManyToOne и присоединяюсь с помощью JPQL

         Query query = JPA.em().createQuery("select b from Trade t, Book b where     t.bookId = b.sybIdentityCol and t.sybIdentityCol=209115258");
        List<Book> books = query.getResultList();
  

Я использую org.hibernate.dialect.Sybase11Dialect в качестве диалекта JPA. Я не понимаю, почему отображение ManyToOne не работает.

Комментарии:

1. Ограничение внешнего ключа отсутствует в таблице, поэтому он пытается выполнить SQL-инструкцию ALTER TABLE и завершается неудачей. Настройка jpa.ddl=none вместо настройки по умолчанию jpa.ddl=update предотвращает выполнение инструкции ALTER TABLE.