我试图从 JPA 类调用一个简单的函数,该函数根据一些计算返回一个数字,并具有以下定义。
'CREATE OR REPLACE FUNCTION CFB.FC_AMOUNT_CHECK(accountNumber IN VARCHAR2)
return NUMBER IS .....'
Run Code Online (Sandbox Code Playgroud)
我试图通过以下方式从 JPA 调用此函数。
StringBuilder sql = new StringBuilder("call CFB.FC_AMOUNT_CHECK(:accountNumber)");
Query query = em.createNativeQuery(sql.toString());
query.setParameter(1, '1234');
List<?> result = query.getResultList();
Run Code Online (Sandbox Code Playgroud)
....
然而,当我执行这个类时,我总是得到以下异常:
java.lang.IllegalArgumentException: org.hibernate.QueryParameterException: could not locate named parameter [1]
Run Code Online (Sandbox Code Playgroud)
我似乎不明白 JPA 怎么找不到参数 1....在过去的 4 小时里我一直为此伤透了脑筋。谁能建议如何获得我想要的结果?
我试图在orm.xml文件中外部化JPA的所有命名查询.我想在我的Java程序中获取命名查询字符串用于某些操作目的,但JPA似乎没有公开任何将命名查询作为字符串返回的方法.我所能做的就是createNamedQuery
使用命名查询的名称.
有没有其他方法来解决这个问题,以获得像Hibernate公开的命名查询字符串?与getSession().getNamedQuery("namedQueryName");
JPA 类似?
谢谢,Sonu.
我试图得到一个双倍值(十进制后的第二个数字)的百分位数字.
因此,例如,如果double值是48.4569999,我想使用任何Math或BigDecimal方法获得值5,这是十进制之后的百分位数.
我试过以下代码:
BigDecimal src = new BigDecimal("48.4569999");
BigDecimal a = src.remainder(BigDecimal.ONE);
System.out.println("a : " + a);
Run Code Online (Sandbox Code Playgroud)
这导致.456999但我不想使用任何字符串函数来获得第二个数字.请问有什么Math或Bigdecimal函数吗?非常感谢您的帮助.