Não busca resultado através do ID (java, hibernate, mysql)

Olá, pessoal!

Então… To tentando desenvolver uma aplicação que informa o salário de uma pessoa física. Aí eu fiz uma tabela de feriados para controlar melhor o salário no fim do mês.
Fui fazer um teste p/ ver se a aplicação tá buscando as informações da tabela de feriados e tomei logo uma exceção dizendo que não conseguiu achar o ID que eu busquei, mas quando vou na minha tabela o ID existe.

Minha entidade:

package teste.persistencia.entidade;

import java.sql.Date;

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.Table;


@Entity
@Table(name = "Feriados")
public class Feriados {
	
	@Id
	@JoinColumn(name = "id")
	private int id;
	@JoinColumn(name = "descricao")
	private String descricao;
	@JoinColumn(name = "data")
	private Date data;
	
	public Feriados(){}
	
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	
	public String getDescricao() {
		return descricao;
	}
	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}
	
	public Date getData() {
		return data;
	}
	public void setData(Date data) {
		this.data = data;
	}
	
}

Meu persistence.xml:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0"
	xmlns="http://java.sun.com/xml/ns/persistence">
	<persistence-unit name="informaSalario">
		<provider>org.hibernate.ejb.HibernatePersistence</provider>
		<class>teste.persistencia.entidade.PessoaFisica</class>
		<class>teste.persistencia.entidade.Feriados</class>
		<properties>
			<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
			<property name="hibernate.hbm2ddl.auto" value="update" />
			<property name="hibernate.show_sql" value="true" />
			<property name="hibernate.format_sql" value="true" />
			
			<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
			<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/informaSalario" />
			<property name="javax.persistence.jdbc.user" value="root" />
			<property name="javax.persistence.jdbc.password" value="mendroot" />
		</properties>
	</persistence-unit>
</persistence>

Stacktrace:

Exception in thread "main" javax.persistence.EntityNotFoundException: Unable to find teste.persistencia.entidade.Feriados with id 1
	at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$JpaEntityNotFoundDelegate.handleEntityNotFound(EntityManagerFactoryBuilderImpl.java:139)
	at org.hibernate.proxy.AbstractLazyInitializer.checkTargetState(AbstractLazyInitializer.java:242)
	at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:159)
	at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:266)
	at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:68)
	at teste.persistencia.entidade.Feriados_$$_jvst477_1.toString(Feriados_$$_jvst477_1.java)
	at java.lang.String.valueOf(String.java:2849)
	at java.io.PrintStream.println(PrintStream.java:821)
	at teste.persistencia.main.SistemaSalario.main(SistemaSalario.java:34)

Método para retornar o resultado:

Feriados feriados = new Feriados();
EntityManagerFactory factory = Persistence.createEntityManagerFactory("informaSalario");
EntityManager em = factory.createEntityManager();

public Feriados carregaFeriadosId (int id){
		feriados = em.getReference(Feriados.class, id);
		return feriados;
	}

Alguém sabe o que que está acontecendo aí?

Altere o método de busca para find o getReference busca apenas as entidades que ja foram carregadas pelo hibernate;

feriados = em.find(Feriados.class, id);

2 curtidas

Minha nossa! E eu achando que meu sistema não estava nem conseguindo acessar o banco. MUITO obrigado, Edu! Me salvou. :grinning: