Erro ao chamar procedure com hibernate

Bom dia a todos!

Estou integrando um sistema java/hibernate com uma pl sql/procedure.
Sempre que tento compilar retorna esse erro: java.lang.Integer cannot be cast to java.lang.Double. O erro é bem claro, que um inteiro não pode ser passado pro double. O problema é que momento algum eu uso inteiro nessa aplicação.

Segue o código da entidade:

@Entity 
@Table(name="TCONTAS")
@NamedQuery(name="Tconta.findAll", query="SELECT t FROM Tconta t")
@NamedStoredProcedureQuery(
    name="PRC_CREATE_CONTAS",
    procedureName="PRC_CREATE_CONTAS",
    resultClasses = { Tconta.class },
    parameters={
        @StoredProcedureParameter(name="valor", type=Double.class, mode=ParameterMode.IN),
       @StoredProcedureParameter(name="juros", type=Double.class, mode=ParameterMode.IN),
        @StoredProcedureParameter(name="vancimento", type=Date.class, mode=ParameterMode.IN)
    }
 )
public class Tconta implements Serializable {
private static final long serialVersionUID = 1L;

@Id
@SequenceGenerator(name="TCONTAS_CODIGO_GENERATOR", sequenceName="SEQ_TCONTAS")
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="TCONTAS_CODIGO_GENERATOR")
private long codigo;

private Double juros;

private Double valor;

@Temporal(TemporalType.DATE)
private Date vancimento;

public Tconta() {
}

public long getCodigo() {
	return this.codigo;
}

public void setCodigo(long codigo) {
	this.codigo = codigo;
}

public Double getJuros() {
	return this.juros;
}

public void setJuros(Double juros) {
	this.juros = juros;
}

//pra nao ocupar mt espaço eu tirei os get e set do valor e vAncimento rs

Método principal

public void save() 
{
//em está em um método construtor
	em.getTransaction().begin();
	//em.persist(_contas);
	StoredProcedureQuery prc = em.createNamedStoredProcedureQuery("PRC_CREATE_CONTAS");
	prc.registerStoredProcedureParameter("valor", Double.class, ParameterMode.IN);
	prc.registerStoredProcedureParameter("juros", Double.class, ParameterMode.IN);
	prc.registerStoredProcedureParameter("vancimento", Date.class, ParameterMode.IN);
	prc.setParameter("valor", 900);
	prc.setParameter("juros", 9.2);
	prc.setParameter("vancimento", data);
	
	prc.execute();
	
	em.getTransaction().commit();
	em.close();
	
}

Procedure:

CREATE OR REPLACE PROCEDURE PRC_CREATE_CONTAS(vVALOR IN NUMBER, vJUROS IN NUMBER, vVANCIMENTO IN DATE) IS
BEGIN
--regras
END;

se eu mudar tudo de Double pra int, retorna o seguinte erro:

ERROR: Tentativa de definir um nome de parâmetro que não ocorre no código SQL: valor
Exception in thread "main" javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: 
Error preparing CallableStatement
at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:149)
at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:157)
at org.hibernate.procedure.internal.ProcedureCallImpl.execute(ProcedureCallImpl.java:653)
at bean.Contas_bean.save(Contas_bean.java:40)
at bean.Main.main(Main.java:8)
Caused by: org.hibernate.exception.GenericJDBCException: Error preparing CallableStatement
at 
org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:47)
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:111)
at org.hibernate.procedure.internal.ProcedureCallImpl.buildOutputs(ProcedureCallImpl.java:456)
at org.hibernate.procedure.internal.ProcedureCallImpl.getOutputs(ProcedureCallImpl.java:404)
at org.hibernate.procedure.internal.ProcedureCallImpl.outputs(ProcedureCallImpl.java:663)
at org.hibernate.procedure.internal.ProcedureCallImpl.execute(ProcedureCallImpl.java:646)
... 2 more
Caused by: java.sql.SQLException: Tentativa de definir um nome de parâmetro que não ocorre no código SQL: valor
at oracle.jdbc.driver.OracleCallableStatement.addNamedPara(OracleCallableStatement.java:6153)
at oracle.jdbc.driver.OracleCallableStatement.setInt(OracleCallableStatement.java:5561)
at oracle.jdbc.driver.OracleCallableStatementWrapper.setInt(OracleCallableStatementWrapper.java:166)
at org.hibernate.type.descriptor.sql.IntegerTypeDescriptor$1.doBind(IntegerTypeDescriptor.java:52)
at org.hibernate.type.descriptor.sql.BasicBinder.bind(BasicBinder.java:104)
at org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:400)
at org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:395)
at org.hibernate.procedure.internal.AbstractParameterRegistrationImpl.prepare(AbstractParameterRegistrationImpl.java:335)
at org.hibernate.procedure.internal.ProcedureCallImpl.buildOutputs(ProcedureCallImpl.java:444)
... 5 more
Hibernate: 
{call PRC_CREATE_CONTAS(?,?,?,?,?,?)}

OBS: O sistema persiste perfeitamente sem procedure, apenas com entityManager.

Você não está usando, mas, o retorno da procedure é um inteiro.

O que acontece é que quando eu uso inteiro, eu recebo a msg:

e a execução da procedure:

Eu defini a procedure com as variáveis do tipo number, seria isso que retorna o int? Teria um outro tipo a se declarar?

Cara, na verdade, a mensagem de erro se refere ao fato de que você tem em tua procedure os seguintes parâmetros:

E está definindo, para o JPA como

Creio que deva trocar por vValor, vJuros e vVANCIMENTO

é cara, eu mudei direto na procedure so pra fzr esse teste mesmo e só mudou o nome da variavel na mensagem de erro:

CREATE OR REPLACE PROCEDURE PRC_CREATE_CONTAS( juros IN NUMBER,  valor IN NUMBER, vancimento IN DATE) IS

BEGIN
     Dbms_Output.Put_Line('Mostre-me o que tens:'  ||juros);
END;

ERROR: Tentativa de definir um nome de parâmetro que não ocorre no código SQL: juros

Eu tentei colocar o mais na ordem possível segundo a tabela, tanto no jpa qnt na procedure, que é juros, valor e vencimento, mas ele ja pega na 1º variavel.