本來應該是一個nobrainer結果比我想象的更復雜一點,所以我希望有人可以幫忙。查找來自JPA的GUID
基本上我有柱式的數據庫表中的SQL Server這樣的:
CREATE TABLE [dbo].[order] (
[orderid] [bigint] NOT NULL,
[uniqueid] [uniqueidentifier] NOT NULL,
[revision] [int] NOT NULL,
<lots of other stuff...>
CONSTRAINT [PK_order] PRIMARY KEY ([orderid]),
CONSTRAINT [UK_order] UNIQUE ([uniqueid], [revision])
)
由(UNIQUEID,修訂版)尋找從SQL Management Studio中的訂單就像一個夢所以
SELECT *
FROM [order]
WHERE [uniqueid] = '9E2822E9-4D08-4A25-8A86-ADAF8DB511CE' AND [revision] = 5;
返回任何合適的值。
當我嘗試從我的JPA框架訪問訂單表時出現問題。這是我的訂單表實體映射:
@Entity
@Table(name="[order]")
public class Order implements Serializable {
@Id
private long orderid;
private String uniqueid;
private int revision;
<lots of other stuff...>
}
通過的OrderID尋找一份訂單就像一個夢,說
public Order loadOrder(long orderid) {
return JPA.getManager().find(Order.class, orderid);
}
回報什麼是適當的。
當我試圖通過(uniqueid,revision)從我的JPA框架中檢索訂單時,問題就出現了。這失敗了:
public Order loadOrder(String uniqueid, int version) {
Query q = JPA.getManager().createQuery("SELECT o FROM Order o WHERE o.uniqueid=:uniqueid AND o.version=:version");
q.setParameter("uniqueid", uniqueid).setParameter("version", version);
...
}
with java.sql.SQLException:從字符串轉換爲uniqueidentifier時轉換失敗。 谷歌搜索SQLException消息會產生大量結果,但全部必須與生成唯一標識符。我沒有產生任何東西 - 只是想查找現有的值。
我有一種嘮叨的感覺,我失去了一些明顯的東西,但我必須承認,我卡住了。任何幫助?
BTW JPA.getManager()返回javax.persistence.EntityManager的一個實例。