是否可以将静态集合作为hibernate实体的成员?
说我有一个对象问题:
public class Question {
private String category;
...
}
是否可以填充静态Set< String>这是数据库中所有类别的一组不同的?我知道我可以查询这个,但我想知道是否有一个更优雅的解决方案,因为它似乎是其他人可能遇到的事情。
答案 0 :(得分:2)
据我所知,JPA无法保留static
或final
字段。规范在这方面不是很清楚,但它使IMO有意义,因为我没有看到OneToXXX
关系中的那个(所以JPA应该如何加载它)。您可能希望从ejb3专家组检查the following thread以获得一些反馈(即不是最终答案)。我担心您会以某种方式将所有Question
与所有Category
相关联。
但也许你会得到更多“令人满意”的答案。我们来看看。
答案 1 :(得分:2)
简单但不完美的解决方案是在@PostLoad
或Category
实体(或两者)上使用实体Question
回调方法:
@Entity
public class Question {
public static Set<String> categories = new HashSet<String>();
...
@PostLoad
public void fillInCategories() {
categories.add(category);
}
}
categories
是延迟加载的 - 直到所有包含每个类别的问题都被加载后才会完成。
答案 2 :(得分:0)
使用属性访问。
默认情况下,ObjectDB直接访问字段,但也支持使用get和set方法间接访问字段:
@Access(AccessType.PROPERTY)