是否有可能將靜態集合作爲hibernate實體的成員?靜態集合作爲成員的休眠(JPA)實體
說我有一個對象問題:
public class Question {
private String category;
...
}
有沒有可能來填充一組靜態<字符串>這是一組不同的數據庫中的所有類別的?我知道我可以對此進行查詢,但我想知道是否有更優雅的解決方案,因爲它似乎是其他人可能遇到的問題。
是否有可能將靜態集合作爲hibernate實體的成員?靜態集合作爲成員的休眠(JPA)實體
說我有一個對象問題:
public class Question {
private String category;
...
}
有沒有可能來填充一組靜態<字符串>這是一組不同的數據庫中的所有類別的?我知道我可以對此進行查詢,但我想知道是否有更優雅的解決方案,因爲它似乎是其他人可能遇到的問題。
據我所知,JPA無法堅持static
或final
字段。這個規範並不是很清楚,但它使IMO有意義,因爲我沒有看到OneToXXX
關係中的關係(因此JPA應如何加載它)。您可能需要檢查the following thread以獲取ejb3專家組的一些反饋意見(即不是最終答案)。恐怕你會不知何故將你所有的Question
和Category
連接起來。
但也許你會得到更多「滿意」的答案。讓我們來看看。
簡單但不完美的解決方案將使用實體@PostLoad
回調方法上Category
或Question
實體(或兩者):
@Entity
public class Question {
public static Set<String> categories = new HashSet<String>();
...
@PostLoad
public void fillInCategories() {
categories.add(category);
}
}
categories
是懶加載 - 直到包含每一個類別中的所有問題都裝好了贏得」完整。
使用屬性訪問。
默認情況下,ObjectDB直接訪問字段,但間接訪問領域使用get和set方法的屬性也支持:
@Access(AccessType.PROPERTY)
我沿着從一個SELECT DISTINCT拉只讀集合的線路意思查詢。 – partkyle 2010-06-11 00:04:19
@凱爾是的,我理解這個想法,但我不知道如何告訴JPA以一種很好的方式來做到這一點。我很好奇你是否能得到更好的答案。 – 2010-06-11 00:25:26