我正在尝试编写一个查询,允许我检索数据存储区Entity的ArrayList,以便我可以在JSP上显示它。我能够成功地将实体添加到数据存储区,我可以在开发控制台中看到ArrayList也在那里。
我是否需要嵌入ArrayList来实现这一目标?嵌入后,将检索列表的查询是什么?
{I}添加到数据存储区的SharedCorpse
类。
@Entity
public class SharedCorpse extends Corpse {
@Id Long id;
@Index long corpseID;
public SharedCorpse(ArrayList<CorpseLyric> corpseLyrics, long corpseID) {
super(corpseLyrics);
this.corpseID = corpseID;
}
}
Corpse
类SharedCorpse
扩展(如果有帮助)
public class Corpse implements Serializable {
@Index private ArrayList<CorpseLyric> corpseLyrics;
public Corpse() {
corpseLyrics = new ArrayList<CorpseLyric>();
}
public Corpse(ArrayList<CorpseLyric> corpseLyrics) {
this.corpseLyrics = corpseLyrics;
}
public void addLyricSnippet(CorpseLyric corpseLyric) {
corpseLyrics.add(corpseLyric);
}
public void removeLyricSnippet(CorpseLyric corpseLyric) {
corpseLyrics.remove(corpseLyric);
}
public ArrayList<CorpseLyric> getCorpseLyrics() {
return corpseLyrics;
}
}
我当前的查询:
SharedCorpse sharedCorpse = ObjectifyService.ofy().load().type(SharedCorpse.class).filter("corpseID",sharedID).first().now();
我用来显示ArrayList中项目的JSP代码:
<table>
<c:forEach var="corpseLyric" items="${sharedCorpse.corpseLyrics}">
<tr>
<td>${corpseLyric.snippet}</td>
</tr>
</c:forEach>
</table>
答案 0 :(得分:0)
你不需要做任何特别的事情。如果你的尸体有一个List类型的字段,它将被整个存储和检索。你不需要(也可能不应该)@Index the field。
此外,您可能不希望维护单独的id
和corpseID
字段。只需使用id并按键加载实体(或使用type()。id()快捷方式)。
您可能需要阅读此内容:https://github.com/objectify/objectify/wiki/Entities