У меня есть этот код для BookModel.java:
@Entity
@Table(name = "BOOK")
@NamedNativeQuery(name = "BookModel.findBookTitle", query = "SELECT @rownum:=@rownum+1 'no', m.title, m.author, REPLACE(SUBSTRING_INDEX(m.content, ' ', 30), '<br>', ' '), m.viewed, m.hashid FROM book m, (SELECT @rownum:=0) r WHERE m.title like 'a%'")
public class BookModel implements Serializable
{
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "MY_SEQ_GEN")
@Column(name = "id", unique = true, nullable = false)
private Long id;
@NotNull
@Size(min = 1, max = 255)
@Column(name = "title")
private String title;
@NotNull
@Size(min = 1, max = 255)
@Column(name = "author")
private String author;
}
И BookService.java для бизнес-уровня:
@Stateless
public class BookService
{
@SuppressWarnings("unchecked")
public List<BookModel> getBook() {
Query query = entityManager.createNamedQuery("BookModel.findBookTitle");
List<BookModel> result = query.getResultList();
return result;
}
}
И BookBean.java для уровня презентации:
@ManagedBean(name = "BookBean")
@RequestScoped
public class BookBean implements Serializable
{
@EJB
private BookService bookService;
private DataModel<BookModel> book;
public DataModel<BookModel> getBook() {
return book;
}
}
И на странице book.xhtml:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.prime.com.tr/ui">
<p:dataTable id="bookList" value="#{BookBean.book}" var="book">
...
</p:dataTable>
</html>
У меня вопрос: как я могу ограничить метод getBook () в BookBean должен выполняться только один раз вместо шести - предположительно для каждой фазы жизненного цикла JSF.Кто-нибудь еще сталкивался с этим раньше?Пожалуйста помоги.Застряли в этом в последний день безуспешно.