hibernate组件注释表

时间:2015-12-26 16:21:11

标签: java spring hibernate

是否可以配置Hibernate注释以将组件类存储在单独的表中?

采用以下示例:

@Table(name = "A")
@Entity
public class A implements Serializable {
@Id
public String id;

@OneToMany
@JoinColumn(name="ENTITY_ID", insertable=false, updatable=false)
@NotFound(action=NotFoundAction.IGNORE)
private Set<ComponentObj> components;
....
}

对于组件表...

@Table(name = "C")
public class ComponentObj implements Serializable {

@JoinColumn(name="ENTITY_ID")
public String entity_Id;

....
}

当我开始使用上述注释执行单元测试时,我得到以下异常:

Caused by: org.hibernate.AnnotationException: Use of @OneToMany or @ManyToMany targeting an unmapped class: ComponentObj

我已将这两个类声明为带注释的类......

1 个答案:

答案 0 :(得分:1)

我建议将ComponentObj作为一个真实实体,使用标识符,并简单地使用OneToMany关联。

可能会有组件的混合,但不是你尝试的方式。

  • 组件类必须使用@Embeddable
  • 进行注释
  • 该集合必须使用@ElementCollection
  • 进行注释
  • 组件不得包含entity_Id字段
  • 必须使用集合
  • 上的CollectionTable注释指定要使用的表

the javadoc中提供了完整的示例。