2

在我看来,我想要实现的目标是微不足道的;然而,我自己解决这个问题让我很头疼。

我有一个用 Clojure 编写的服务实现,它通过 JPA 与数据库后端通信。我必须做这样的事情:

(defn foo []
  (let [entitymanager ... query ...]
    (do
      (.. entitymanager (getTransaction) (begin))
      (read-from-db query) ; <-- shall be returned
      (.. entitymanager (getTransaction) (commit))
      )
    )
  )

数据库读取返回一个值。我查看了java.jdbc包,它看起来很有希望,但我想/必须坚持使用 JPA。此外,我的问题似乎并不特定于 JPA 本身。

有没有一种惯用的方法来在 Clojure 中对返回值进行这种包装?请记住,我是 Clojure 新手。

亲切的问候!

4

1 回答 1

3

我不确定是否理解您的问题。这是我对您的问题的回答:

(defn foo []
  (let [entitymanager ... query ...]
    (do
      (.. entitymanager (getTransaction) (begin))
      (let [db-reply (read-from-db query)] ; <-- shall be returned
        (.. entitymanager (getTransaction) (commit))
        db-reply)
      )
    )
  )

正确的?

于 2013-02-13T17:49:26.337 回答