我有一种关系:客户有一个帐户。所以,下面的实现是Hibernate 3 OneToOne使用PostgreSQL
Account.class:
@Column(name = "client_id")
@GeneratedValue(generator = "gen")
@GenericGenerator(name = "gen", strategy = "foreign",
parameters = { @Parameter(name = "property", value = "clientDTO") })
private int client_id;
Client.class:
@OneToOne(cascade = CascadeType.ALL)
private AccountDTO accountDTO;
我初始化客户端,帐户,并设置帐户给客户,但是当我试图挽救它给db,我得到一个异常:
java.sql.BatchUpdateException:批量条目0插入到 公共.accounts(balance,client_id,comment,credit_limit,id)值 (1000.0,0,comment,0.0,8)被中止。调用getNextException到 查看原因。
正如您所看到的,我的应用试图插入client_id = 0的帐户;
我该如何解决?
你想做什么?您是否希望帐户ID与客户端ID具有相同的值(不需要额外的client_id列),还是只需要一个普通的一对一映射,其中帐户表具有client_id列?请发布您的表定义和基础数据库异常(来自postgresql日志文件)。 – tscho
尝试直接用'insert into public.accounts(balance,client_id,comment,credit_limit,id)values(1000.0,0,comment,0.0,8)'查询您的数据库,并告诉我们在这种情况下DB说什么 – Maxym
@tscho我想要帐户的字段“client_id”,具有与字段“id”相同的值。所以一个客户有一个帐户 – Sergii