0

我使用Hibernate ddl 生成SQL 来生成实体的表(我认为)。反正有hashcode字段。我的问题是:

  1. 那个字段有必要吗?
  2. 如果我使用 SQL 在表中插入测试数据,我应该将值设置为什么?从我在这里读到的,本机 java 实现使用内存地址来提供哈希函数?(Java——Object.hashCode() 算法
  3. 如果我为所有序列化的实体编写了一个映射的超类来继承,它执行实体Id字段的常规散列,我以后会不会给自己带来一些悲伤?(我想我是从“有效的 java”中得到这个想法的。)
4

1 回答 1

0

表中不应该有 hashCode 字段。如果 Hibernate 生成了这样的字段,那么在您的类层次结构(超类)中的某个地方定义了一个 hashCode 字段。尝试找到它并将其标记为@Transient。Hibernate 忽略 Object.class 的所有字段。

如果我为所有要继承的序列化实体编写了一个映射超类,该超类执行实体的 Id 字段的常规散列,我以后会不会给自己带来一些悲伤?(我想我是从“有效的 java”中得到这个想法的。)

当然,您以后很可能会遭受这种痛苦:-)。不要使用这样的字段,除非您必须喜欢在创建实例时分配随机哈希码的特殊实例,这些哈希码在实体的整个生命周期(包括 db-life)中保持一致。

于 2013-09-29T20:18:00.960 回答