2016-04-21 4 views
1

Добрый день. У меня 2 таблицы.Hibernate @ManyToOne ошибка отображения

CREATE TABLE A(
    id NUMBER(10) NOT NULL, 
    name VARCHAR2(255) NULL, 
    category VARCHAR2(255) NULL, 
    is_hidder NUMBER(1) NULL, 
    is_enabled NUMBER(1) NULL, 
    b_id NUMBER(10) NULL, 
    CONSTRAINT pk_a PRIMARY KEY (ID), 
    CONSTRAINT fk_to_b 
    FOREIGN KEY (vj_users_preferences_id) 
    REFERENCES VJ_USER_PREFERENCES(ID) 
); 

CREATE TABLE B(
    ID NUMBER(10) NOT NULL, 
    EXT_ID NUMBER(10) NOT NULL, 
    KEY VARCHAR2(1024) NOT NULL, 
    VALUE VARCHAR2(1024) NOT NULL, 
    CONSTRAINT PK_B PRIMARY KEY(ID) 
); 

Для обеих таблиц у меня есть сущности, и я хочу их сопоставить @OneToOne.

class Entity A{ 
    ....... 
    @OneToOne(cascade = CascadeType.ALL) 
    @JoinColumn(name="pk_b", referencedColumnName = "id") 
    private B b; 
} 

Предприятие B проверено и не имеет поля A, поэтому соединение является однонаправленным. Когда я пытаюсь упорствовать объект А я получил ошибку:

Caused By: org.hibernate.HibernateException: Could not determine type of dynamic map entity

Это исключение быть выброшен из:

org.hibernate.tuple.entity.DynamicMapEntityTuplizer.BasicEntityNameResolver#resolveEntityName

Поскольку вход Карта и он не получил: DynamicMapInstantiator.KEY в нем ,

Может ли кто-нибудь помочь мне в этом вопросе? Я не могу понять, почему Hibernate создает эту карту без необходимой ценности. Что-то не так с моим картографированием?

ответ

0

Оказалось, что моя форма UI получала более 50 символов, но была база данных: EXT_ID NUMBER(10) NOT NULL Когда я изменил таблицу с учетом возможностей пользовательского интерфейса (например EXT_ID NUMBER (50) NOT NULL), то пропала ошибка.

Это исключение, по моему мнению, вводит в заблуждение в подобной ситуации. Я ожидал увидеть: SQLGrammarException своего рода. Надеюсь, это поможет в будущем.

Смежные вопросы