hibernate自动类型转换

时间:2015-12-17 11:45:49

标签: java hibernate jpa

Hibernate用作jpa提供程序。

我有一个long id:

的实体
@Id
@Column
private Long id;

但有时可能会使用int ID:

查询
int id = ...
entityManager.find(MyEntity.class, id)

在这种情况下,由于持久性和请求的id类型不同,找不到实体。

我可以在传递给实体管理器之前手动转换这个id,但是hibernate可以在内部执行这样的转换吗?

2 个答案:

答案 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);