祝你有美好的一天。我有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在创建该地图时没有必要的价值。我的映射有问题吗?
看来我的UI表单正在接收超过50个符号,但是数据库却有:EXT_ID NUMBER(10) NOT NULL
当我更改表以反映UI可能性(例如EXT_ID NUMBER(50)NOT NULL)时,错误消失了。
根据我的理解,这种例外在这种情况下具有误导性。我期待看到:SQLGrammarException之类的。希望有一天会有所帮助。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句