在One To One映射中,我编写了以下代码行。
@GenericGenerator(name = "generator", strategy = "foreign", parameters = @Parameter(name="property", value= "post"))
@Id
@GeneratedValue(generator = "generator")
public int getContent_id() {
return content_id;
}
@Parameter(name =“property”,value =“post”)的意义何在?如果我不写那行,我就会收到错误
调用init方法失败;嵌套异常是org.hibernate.MappingException:无法实例化id生成器[entity-name = in.codejava.personal.model.Content]
修改
当我将value =“post”更改为value =“post123”等其他任何内容时,它都有效。但是当我完全删除它时,它不起作用。部分代码http://pastebin.com/CjEpqtXV
答案 0 :(得分:2)
它允许告诉生成器必须从哪个属性中提取ID(在本例中为“post”)。一个实体可以有几个OnetoOne关联。您需要告诉它哪一个包含您实体的ID。
请注意,此生成器可以由包含ID:@MapsId的OneToOne关联上的标准JPA注释替换。 Hibernate文档recommends its usage而不是外部生成器。