Hibernate @ManyToOne映射错误

时间:2016-04-21 12:30:39

标签: java hibernate jpa

祝你好运。我有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在没有必要价值的情况下创建该地图。我的映射有问题吗?

1 个答案:

答案 0 :(得分:0)

我的UI表单似乎收到了超过50个符号,但数据库有:   EXT_ID NUMBER(10) NOT NULL 当我更改表以反映UI可能性(例如EXT_ID NUMBER(50)NOT NULL)时,错误消失了。

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