2016-04-21 102 views
1

美好的一天給你。我有兩張桌子。休眠@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沒有必要的價值創建地圖。我的映射有問題嗎?

回答

0

現在看來,我的UI形式接收了50個符號,但數據庫有: EXT_ID NUMBER(10) NOT NULL 當我改變表,以反映UI的可能性(例如EXT_ID數(50)NOT NULL),那麼錯誤就不見了。

根據我的理解,這種例外在這種情況下會產生誤導。我期待看到:SQLGrammarException的那種。 希望這將有助於oneday。