0

我有分为几类的实体。每个实体可以属于许多类别,所以我有一对多的关联。

下面的 ORM 编辑是否正确:

@OneToMany
@Access(AccessType.FIELD)
private Set<Category> parents = new HashSet<Category>();
public Set<Category> getParents() {
    return parents;
}
public boolean addParent(Category parent) {
    return parents.add(parent);
}
public boolean removeParent(Category parent) {
    return parents.remove(parent);
}

我的具体问题是我是否需要使用 @Access 注释?如果我不使用它,那么 Hibernate 将如何知道不映射getParentsgetter?

4

1 回答 1

4

我不知道您是否需要@Access(AccessType.FIELD)注释,因为这取决于一些默认值(见下文)。但是如果你使用 Field 访问类型(默认或 by @Access(AccessType.FIELD)),那么 Hibernate 将直接访问 FIELD 而不是使用 getter 或 setter!

请参阅Hibernate 参考,第 5.1.4.1.2 章。访问类型,有关访问类型确定算法的更多详细信息。

默认情况下,类层次结构的访问类型由 @Id 或 @EmbeddedId 注释的位置定义。如果这些注释在字段上,则仅考虑字段以进行持久性,并通过字段访问状态。如果 getter 上有注释,那么只有 getter 被认为是持久性的,并且通过 getter/setter 访问状态。这在实践中效果很好,是推荐的方法。

于 2012-09-16T19:27:56.620 回答