0

这是一个使用 Hibernate 和 PostgreSQL 的 JavaEE6 应用程序。用户在数据库中创建@GeneratedValue(strategy = GenerationType.AUTO),生成长 ID。我正在尝试使用数据库的 user_id 列作为登录领域的名称列(例如request.login(id.toString(), password )),因为我无法确保 user_name 列中名称的唯一性。但是,使用 Glassfishv3 的内置 FORM 身份验证失败,因为该机制似乎期望数据库中的列是 var char。
因此,我正在寻找一种在数据库中创建用户的同时填充列 string_id 的方法,该列的值将是自动生成的翻译成字符串的 id。我可以在随后的手术中做到这一点,但我想知道这是否可以一次性完成。我试过@PrePersist,但似乎在这个阶段还没有生成id。或者也许有更聪明的方法来执行登录?

谢谢。

4

1 回答 1

0

您可以一口气完成-

@Entity
public class A {
  @Id @GeneratedValue(strategy=SEQUENCE)
  public Integer getId() { return id; }
  public void setId(Integer id) { this.id = id; }
  private Integer id;

  public String getName() { return name; }
  private void setName(String name) { this.name = name; }
  private String name;
}

Serializable id = em.unwrap(Session.class).save(a);
a.setName("Why oh why redundancy? " + id);
em.flush();

从https://gist.github.com/786238复制的代码

于 2011-02-24T18:52:15.977 回答