我想在JPA中设置日期和字符。 Hibernate中有一些特殊的方法如下:
Query q = session.getNamedQuery(namedQuery);
q.setDate(0, (Date) (params[i]));
q.setCharacter(1, params[i]);
q.executeUpdate();
JPA中有setCharacter()
的任何内容吗?
我知道setParameter()
有Date
,但我不知道如何使用Character
。我想将其转换为JPA查询参数,如:
Query q = getEntityManager().createNamedQuery(namedQuery);
// How to set Date and Character in JPA ?
...
q.executeUpdate();
答案 0 :(得分:1)
您的评论:
雅但我必须使用条件将其区分为字符串,日期或字符..
不,您不必区分。假设您使用jpa命名查询,则只需使用setParam(..)
。假设您已命名查询,如:
@NamedQuery(name="DateCharacter.findOlderByChar",
query="SELECT dc FROM DateCharacter dc "
+"WHERE dc.date<:date AND dc.character=:character")
设置参数就像:
Query query = em.createNamedQuery("DateCharacter.findOlderByChar");
query.setParameter("date", new Date());
query.setParameter("character", 'a');
如果您需要投射,请在setParam(..)
上执行:
query.setParameter("character", (char)97); // ascii code for 'a'
如果你需要任何条件来确定如何在设置参数之前进行投射。
但是如果你试图为字符添加一个错误类型的param(如字符串):
query.setParameter("character", "a string");
你最终会得到一个例外:
引起:java.lang.ClassCastException:无法将“class java.lang.String”类型的对象“a string”转换为“class java.lang.Character”的实例。