Hibernate用作jpa提供程序。
我有一个long
id:
@Id
@Column
private Long id;
但有时可能会使用int
ID:
int id = ...
entityManager.find(MyEntity.class, id)
在这种情况下,由于持久性和请求的id类型不同,找不到实体。
我可以在传递给实体管理器之前手动转换这个id
,但是hibernate可以在内部执行这样的转换吗?
答案 0 :(得分:1)
据我所知,Hibernate中没有这样的内置机制。在提供输入时,例如,
query.setParameter("abc", 5);
5 仅被视为int
。如果您想将其作为long
传递,则必须将其指定为
query.setParameter("abc", 5L);
如果您传递任何变量保持值,则必须先确保将该变量转换为long
,然后将其作为参数传递。
除此之外,您还可以使用
query.setLong("abc", 5L);
始终确保您传入的值仅为long
。
答案 1 :(得分:0)
您可以尝试以下方法:
int z = 10;
long w = z;
System.err.println ("Value:" + w);
Long id = w;
System.err.println ("Value:" + id);
entityManager.find (MyEntity.class, id);