小编for*_*ker的帖子

Hibernate使用PostgreSQL序列不会影响序列表

我已将Hibernate配置为使用PostgreSQL序列(通过注释)为主键id列生成值,如下所示:

@Id 
@SequenceGenerator(name="pk_sequence",sequenceName="entity_id_seq")
@GeneratedValue(strategy=GenerationType.SEQUENCE,generator="pk_sequence")
@Column(name="id", unique=true, nullable=false)
public int getId() {
    return this.id;
}
Run Code Online (Sandbox Code Playgroud)

我在这个配置中看到的是,hibernate已经在持久化时分配了id值> 3000,而对使用过的序列的查询显示如下:

database=# select last_value from entity_id_seq;
last_value 
------------
     69
Run Code Online (Sandbox Code Playgroud)

(1排)

问题:
有什么不对吗?
hibernate应该与序列表同步吗?
如果没有,它在哪里存储最后生成的ID?

谢谢.

java postgresql orm hibernate hibernate-mapping

26
推荐指数
3
解决办法
4万
查看次数

从HashMap设置对象字段

是否有可以执行以下操作的库?:

给定一个Object和一个HashMap,它枚举Hashmap的键,并在Object中查找这些键的setter并设置相关的值.看起来像这样的东西:

public Object setData(Object object, HashMap<String, Object> fields) {
   for (Entry<String, Object> entry : fields.entrySet()) {
      Method m = object.getClass().getMethod("set" + entry.getKey(), entry.getValue().getClass());
      if (m != null) {
         m.invoke(object, entry.getValue());
      }
   }
   return object;
}
Run Code Online (Sandbox Code Playgroud)

这个任务看起来很简单,但我希望有人已经注意到了一些细微差别.如你所知,重新发明轮子(好轮子)是一种糟糕的方法.

java reflection pojo

20
推荐指数
2
解决办法
2万
查看次数

Scala:将元组列表展开为元组的可变长度参数列表

我很困惑如何将List/Seq/Array扩展为可变长度参数列表.

鉴于我有test_func函数接受元组:

scala> def test_func(t:Tuple2[String,String]*) = println("works!")
test_func: (t: (String, String)*)Unit
Run Code Online (Sandbox Code Playgroud)

当我传递元组时,哪个有效:

scala> test_func(("1","2"),("3","4"))
works!
Run Code Online (Sandbox Code Playgroud)

从阅读Scala参考资料中我得到了强烈的印象,即以下内容也可以起作用:

scala> test_func(List(("1","2"),("3","4")))
<console>:9: error: type mismatch;
 found   : List[(java.lang.String, java.lang.String)]
 required: (String, String)
              test_func(List(("1","2"),("3","4")))
                        ^
Run Code Online (Sandbox Code Playgroud)

还有一次绝望的尝试:

scala> test_func(List(("1","2"),("3","4")).toSeq)
<console>:9: error: type mismatch;
 found   : scala.collection.immutable.Seq[(java.lang.String, java.lang.String)]
 required: (String, String)
              test_func(List(("1","2"),("3","4")).toSeq)
Run Code Online (Sandbox Code Playgroud)

如何将List/Seq/Array扩展为参数列表?

先感谢您!

functional-programming scala

20
推荐指数
1
解决办法
1万
查看次数

Hibernate支持Postgresql UUID?

我不能让Hibernate使用java.util.UUID for PostgreSQL.

这是使用javax.persistence的映射.*annotations:

private UUID itemUuid;

@Column(name="item_uuid",columnDefinition="uuid NOT NULL")
public UUID getItemUuid() {
    return itemUuid;
}

public void setItemUuid(UUID itemUuid) {
    this.itemUuid = itemUuid;
}
Run Code Online (Sandbox Code Playgroud)

当持久化对象时,我得到一个SQLGrammarException:

column "item_uuid" is of type uuid but expression is of type bytea at character 149
Run Code Online (Sandbox Code Playgroud)

PostgreSQL版本是8.4.4
JDBC驱动程序--8.4.4-702(也试过9.0 - 同样的事情)
Hibernate版本是3.6,主要配置属性:

<property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property>
<property name="hibernate.connection.driver_class">org.postgresql.Driver</property>
<property name="hibernate.connection.url">jdbc:postgresql://192.168.1.1/db_test</property>
Run Code Online (Sandbox Code Playgroud)

java postgresql orm hibernate hibernate-mapping

14
推荐指数
3
解决办法
2万
查看次数

将每个monad变换器作为MonadTrans的实例是否真的是一种默认做法?

所以真实世界Haskell说:

每个monad变换器都是MonadTrans的一个实例

但我玩斯科蒂,并发现它的基础单子转换ScottyT没有的一个实例MonadTrans.

看一下发行说明,这似乎是一个刻意的设计决定:这里.引用:

ScottyT的monad参数已经解耦,导致ScottyT构造函数的类型发生变化.因此,ScottyT不再是MonadTrans实例......

我希望你理解我的困惑.不过,我会尝试制定严格的问题:

  • 为什么不想让monad变换器成为一个实例MonadTrans呢?
  • 您如何解释上述ScottyT设计的变化?

PS:我明白我可以定义一个MonadTrans ScottyT自己的实例,但是我应该吗?(回到问题链接)

monads haskell monad-transformers scotty

9
推荐指数
1
解决办法
184
查看次数

绑定链中更平滑的类型注释

所以我有这个工作示例(Snap + Postgres):

listBooks :: AppHandler ()
listBooks = do
  results <- query_ "select * from books"
  writeJSON $ (results :: [Book])
Run Code Online (Sandbox Code Playgroud)

作为练习,我试图用>>=操作符重写它,但注释类型的需要杀死了美学.我想不出更好的东西:

query_ "select * from books" >>= return.(\x -> x :: [Book]) >>= writeJSON
Run Code Online (Sandbox Code Playgroud)

还有其他"更顺畅"的方式吗?(最好不指定包装单子类型)

haskell

4
推荐指数
2
解决办法
73
查看次数