2015-12-17 55 views
2

Hibernate用作jpa提供程序。休眠自動類型轉換

我有long ID實體:

@Id 
@Column 
private Long id; 

但有時可以用int ID查詢:

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

而且在這種情況下,實體未發現因堅持和要求id類型差異。

我可以在傳遞給實體管理器之前手動轉換此id,但可以在內部執行這種轉換嗎?

回答

1

根據我所知,Hibernate中沒有這樣的內置機制。在提供輸入,例如時間,

query.setParameter("abc", 5); 

將被視爲僅int。如果你想要把它作爲long那麼你必須像

query.setParameter("abc", 5L); 

指定它。如果你傳遞任何變量保持值,那麼你必須確保你這個變量轉換成long,然後再傳遞作爲參數。

除此之外,您還可以使用

query.setLong("abc", 5L); 

這將始終確保價值傳遞中,只有long

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