java - Hibernate 3 OneToOne 与 PostgreSQL 配合使用

标签 java hibernate postgresql

我有一个关系:客户有一个帐户。所以下面的实现是

帐户.类:

@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/

相关文章:

java - 如何将 org.postgresql.geometric.PGpoint 映射到 Hibernate 类型

PostgreSQL 子查询总数和百分比

sql - 在 PostgreSQL 中没有主键的表用于

java - android getDate 从存储在字符串字段中的毫秒

java - 克隆() vs 复制构造函数 vs 工厂方法?

java - 将日期字符串转换为整数数组

java - 单击时 TextView 颜色不会改变

java - dropwizard hibernate 命名查询未知

java - 我们如何知道哪个登录用户正在使用java中的表单?

sql - 棘手的 PostgreSQL 连接和顺序查询