java - hibernate自动类型转换

标签 java hibernate jpa

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/

相关文章:

java - com.mysql.jdbc.exceptions.jdbc4.CommunicationsException : Communications link failure

java - 组织.hibernate.LazyInitializationException : failed to lazily initialize a collection of role

java - 在实体管理器上调用合并后实体丢失状态

java - 在java中创建可以在php api中反序列化的字符串的有效方法

java - 学习EJB及优势

java - 如何在 jpa 持久性 xml 文件中自动创建表?

java - JPA ManyToOne 字段未存储

测试中的 Hibernate OnDelete 级联不起作用

jpa - 使用 eclipselink 启动 wildfly 9

java - CardView cardElevation 在 CardView 内部绘制随机方 block