休眠@ManyToOne映射错误

问题描述:

美好的一天给你。我有两张桌子。休眠@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字段,所以连接是单向的。当我尝试坚持在A单位给我的错误:

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

此异常被抛出距离:

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

因为输入是地图和它没有得到:DynamicMapInstantiator.KEY在它。

有人可以帮我解决这个问题吗?我无法弄清楚为什么Hibernate没有必要的价值创建地图。我的映射有问题吗?

现在看来,我的UI形式接收了50个符号,但数据库有: EXT_ID NUMBER(10) NOT NULL 当我改变表,以反映UI的可能性(例如EXT_ID数(50)NOT NULL),那么错误就不见了。

根据我的理解,这种例外在这种情况下会产生误导。我期待看到:SQLGrammarException的那种。 希望这将有助于oneday。