Hibernate 用作 jpa 提供程序。
我有一个 long
id 的实体:
@Id
@Column
private Long id;
但有时可能会用int
id 来查询:
int id = ...
entityManager.find(MyEntity.class, id)
在这种情况下,由于持久化和请求的 id 类型不同,找不到实体。
我可以在传递给实体管理器之前手动转换此 id
,但是 hibernate 可以在内部执行这种转换吗?
最佳答案
据我所知,Hibernate 中没有这种内置机制。在提供输入时,例如,
query.setParameter("abc", 5);
5 将仅被视为 int
。如果你想将它作为 long
传递,那么你必须像这样指定它
query.setParameter("abc", 5L);
如果您要传递任何变量持有值,那么您必须确保先将该变量转换为 long
,然后将其作为参数传递。
除此之外,您还可以使用
query.setLong("abc", 5L);
这将始终确保您传入的值仅为 long
。
关于java - hibernate自动类型转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34333811/