休眠@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。