Boa tarde pessoal, terminei esse curso e resolvei fazer mais algumas implementações pra treinar. Criei uma classe Editora pra se relacionar com Livro no mesmo esquema do Autor e Livro na pagina livro.xhtml, aparece um select one menu, seleciono a editora e relaciono com o livro e a editora é renderizada numa tabela a baixo (como do autor). Mas nao consigo localizar o erro. Se puderem me ajudar por favor.
Classe Editora
@Entity
public class Editora implements Serializable {
private static final long serialVersionUID = 1L;
@Id @GeneratedValue(strategy=GenerationType.IDENTITY)
private Integer editoraId;
private String nomeFantasia;
private String razaoSocial;
private String cnpj;
@OneToMany(mappedBy="editora", orphanRemoval=true)
@Cascade(org.hibernate.annotations.CascadeType.ALL)
private List<Livro> livros = new ArrayList<Livro>();
Classe Livro relacionada com a Editora
@Entity
public class Livro implements Serializable{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue
private Integer id;
private String titulo;
private String isbn;
private double preco;
@Temporal(TemporalType.DATE)
private Calendar dataLancamento = Calendar.getInstance();
@Lob
private String descricao;
@ManyToMany(fetch=FetchType.EAGER)
private List<Autor> autores = new ArrayList<Autor>();
@ManyToOne
@JoinColumn(name="editora", nullable=true)
@ForeignKey(name="fk_editora")
private Editora editora = new Editora();
public Editora getEditora() {
return editora;
}
public void setEditora(Editora editora) {
this.editora = editora;
}
Arquivo XHTML (o código a baixo está dentro de um formulario) E, se eu tiro a dataTable funciona tudo... Mas qnd eu coloco pra renderizar, dá problema :/
<!-- FIELDSET QUE ASSOCIA EDITORA COM LIVRO -->
<fieldset>
<legend>Dados da Editora</legend>
<h:outputLabel value="Selecione a Editora: " for="editora" />
<h:selectOneMenu value="#{livroBean.editoraId}" id="editora">
<f:selectItems value="#{livroBean.editoras}" var="editora"
itemLabel="#{editora.nomeFantasia}"
itemValue="#{editora.editoraId}" />
</h:selectOneMenu>
<h:commandButton value="Gravar" action="#{livroBean.gravaEditora}">
<f:ajax execute="editora" render="tabelaEditora" />
</h:commandButton>
<br />
<!-- TABELA COM OPÇÕES DE REMOVER E EDITAR -->
<h:dataTable value="#{livroBean.editorasDoLivro}" var="editora"
id="tabelaEditora">
<h:column>
<h:outputLabel value="#{editora.nomeFantasia}" />
</h:column>
<h:column>
<h:commandLink value="Remover Editora"
action="#{livroBean.removerEditoraDoLivro(editora)}" />
</h:column>
</h:dataTable>
</fieldset>
<h:commandButton value="Gravar" action="#{livroBean.gravar}">
<f:ajax execute="@form"
render="@form :formTabelaLivros:tabelaLivros" />
</h:commandButton>