Java foreign key null

Olá a todos agradeceria ajuda.
Estou tentando incluir o cliente_id na emissao da nota fiscal para que eu possa identificar quais notas fiscais pertencem aquele determinado cliente. Eu consigo inserir os dados da nota fiscal mas o foreign-key do numero do cliente é preenchido com null. Alguém poderia me dizer onde estou errando? Obrigado

este é meu form:

<h:form>
	<div class="form-group row">
		<label for="nomecliente" class="col-sm-8 col-form-label">
			Identificação do Cliente (digite o numero do cliente)</label>
		<div class="col-sm-10"><br></br>
			<h:inputText  id="nomecliente" value="#{notaFiscalBean.idCliente}" 
         type="number" class="form-control"  a:autofocus="true" />
		</div>
	</div>
	
	<div class="form-group row">
		<label for="nomecliente" class="col-sm-8 col-form-label">
			Numero da Nota Fiscal ou Cupom</label>
		<div class="col-sm-10"><br></br>
			<h:inputText  id="numeronota" value="#{notaFiscalBean.notaFiscal.numero}"  
                type="number" class="form-control" />
		</div>
	</div>
	
	<div class="form-group row">
		<label for="datanota" class="col-sm-8 col-form-label">
			Data da Nota</label>
		<div class="col-sm-10"><br></br>
			<h:inputText class="date" value="#{notaFiscalBean.notaFiscal.data.time}" 
           id="datanota" >
			<f:convertDateTime pattern="dd/MM/yyyy"
             timeZone="America/Sao_Paulo" />
			</h:inputText>
			
		</div>
	</div>
					
	<div class="form-group row">
		<label for="valornota" class="col-sm-8 col-form-label">
			Valor da Nota</label>
		<div class="col-sm-10"><br></br>
			<h:inputText  id="valornota" value="#{notaFiscalBean.notaFiscal.valor}" 
                type="number" class="form-control"/>
		</div>
	</div>
		
	
	<h:commandButton value="Cadastrar" type="submit" class="btn btn-warning" action="# 
                 {notaFiscalBean.gravar}"></h:commandButton>

 
</h:form>	

este é meu Bean

@Model
public class NotaFiscalBean{

private Cliente cliente = new Cliente();
private NotaFiscal notaFiscal = new NotaFiscal();
private Long idCliente;
@Inject
private NotaFiscalDAO notaFiscalDAO;

@Inject
private ClienteDAO clienteDAO;

@Transactional
public void gravar() {
	
	clienteDAO.buscaPorId(idCliente);
	
	notaFiscalDAO.adiciona(notaFiscal);
	
	this.notaFiscal = new NotaFiscal();
	
	this.cliente = new Cliente();
	
}

este é o notaFiscal.java

@Entity
public class NotaFiscal implements Serializable{

private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
private String numero;
private Double valor;
@Temporal(TemporalType.DATE)
private Calendar data = Calendar.getInstance();

@ManyToOne
private Cliente cliente;

este é o notaFiscalDAO

public class NotaFiscalDAO implements Serializable {

private static final long serialVersionUID = 1L;


@PersistenceContext
private EntityManager manager;

public void adiciona(NotaFiscal nota) {
	manager.persist(nota);
}

este é o clienteDAO,java

public Cliente buscaPorId(Long id) {

	Cliente cliente = manager.find(Cliente.class, id);

	return cliente;
}

Olá!

No método abaixo você está realizando a busca do cliente através do DAO, mas não está guardando a referência em nenhuma variável, logo não está referenciando-a no atributo cliente da entidade NotaFiscal.

Eu te sugiro o seguinte método:

@Transactional
public void gravar() {

	this.cliente = clienteDAO.buscaPorId(idCliente);

    this.notaFiscal.setCliente(this.cliente);

	notaFiscalDAO.adiciona(notaFiscal);

	this.notaFiscal = new NotaFiscal();

	this.cliente = new Cliente();

}

Agora haverá uma referência de Cliente na entidade NotaFiscal.

Espero ter ajudado. Boa sorte.

1 curtida

Ajudou sim fbirf muito obrigado funcionou !!! Agora está incluindo o id do cliente. Valeu!!!

Olá! Marca como resolvido.

Ola fbirf já havia feito isso na sua resposta eu cliquei em solução e 1 curtida

abraços

1 curtida