我有一个关系:客户有一个帐户。所以下面的实现是
帐户.类:
@Column(name = "client_id")
@GeneratedValue(generator = "gen")
@GenericGenerator(name = "gen", strategy = "foreign",
parameters = { @Parameter(name = "property", value = "clientDTO") })
private int client_id;
客户端.类:
@OneToOne(cascade = CascadeType.ALL)
private AccountDTO accountDTO;
我初始化了一个客户端、帐户,并将帐户设置为客户端,但是当我尝试将其保存到数据库时,出现异常:
java.sql.BatchUpdateException: Batch entry 0 insert into public.accounts (balance, client_id, comment, credit_limit, id) values (1000.0, 0, comment, 0.0, 8) was aborted. Call getNextException to see the cause.
如您所见,我的应用尝试插入 client_id = 0 的帐户;
如何解决?
最佳答案
使用 java.lang.Integer 而不是原始 int ——这样 Hibernate 就可以知道它还没有被设置,需要生成(或作为 null 传递)。或者您可以指定 unsaved-value=0 (但不确定如何从注释中做到这一点)
关于java - Hibernate 3 OneToOne 与 PostgreSQL 配合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8479664/