祝你好运。我有2张桌子。
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实体时,我得到了错误:
引起:org.hibernate.HibernateException:无法确定动态地图实体的类型
抛出此异常:
org.hibernate.tuple.entity.DynamicMapEntityTuplizer.BasicEntityNameResolver#resolveEntityName
因为输入是Map而且它没有:DynamicMapInstantiator.KEY。
有人可以帮我解决这个问题吗?我无法弄清楚为什么Hibernate在没有必要价值的情况下创建该地图。我的映射有问题吗?
答案 0 :(得分:0)
我的UI表单似乎收到了超过50个符号,但数据库有:
EXT_ID NUMBER(10) NOT NULL
当我更改表以反映UI可能性(例如EXT_ID NUMBER(50)NOT NULL)时,错误消失了。
根据我的理解,这种例外在这种情况下会产生误导。我期待看到:SQLGrammarException的那种。 希望这会有所帮助。