RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 938619
Accepted
Roberto
Roberto
Asked:2020-01-30 21:57:25 +0000 UTC2020-01-30 21:57:25 +0000 UTC 2020-01-30 21:57:25 +0000 UTC

使用jpa时,表中已存在此类唯一键或主键错误?

  • 772

基于sprign+jpa和oracle11g base的应用 根据提议的JPA实体设置表生成选项

properties.put("hibernate.hbm2ddl.auto", "create");

实体代码,在创建出现问题的表时:

import lombok.*;
import org.hibernate.annotations.GenericGenerator;
import org.hibernate.envers.Audited;

import javax.persistence.*;

@Entity
@Table(name = "UserRecord")
@NoArgsConstructor(access = AccessLevel.PUBLIC)
@AllArgsConstructor
@Getter
@Setter
@Access(AccessType.FIELD)
public class UserRecord {
    @Id
    @GeneratedValue(generator = "uuid")
    @GenericGenerator(name = "uuid", strategy = "uuid2")
    @Column(name = "PR_KEY", unique = true)
    private String prKey;

    //Business Key
    @Column(name = "name", length = 100, unique = false)
    private String name;

    //surname Key
    @Column(name = "surname", length = 100, nullable = false)
    private String surname;

    //type Key
    @Column(name = "type", length = 100, nullable = false)
    private String type;

    //idPayment Key
    @Column(name = "idPayment", length = 64, nullable = false)
    private String idPayment;

    @Column(name = "User", length = 100000)
    @Lob
    private byte[] User;

    public UserRecord(String name, String surname, String type, byte[] User) {
        this.name = name;
        this.surname = surname;
        this.type = type;
        this.User = User;
    }

    public UserRecord(String name, String surname, String type,
                            String idPayment, byte[] User) {
        this.name = name;
        this.surname = surname;
        this.type = type;
        this.User = User;
        this.idPayment = idPayment;
    }
}

我在这里prKey- 这是数据库中的关键。
name, surname, typeand idPayment- 业务键,它们的组合在表中必须是唯一的,但在数据库计划中它应该只是字段。

当我尝试生成此表时,出现错误

 .SchemaExport perform ORA-02261: such unique or primary key already exists in the table jpa

同时,日志中的请求尝试如下执行:

 Hibernate: create table UserRecord (PR_KEY varchar2(255) not null unique, name varchar2(100), idPayment varchar2(64) not null, riskMetric blob, type varchar2(100) not null, surname varchar2(100) not null, version number(10,0) not null, primary key (PR_KEY), unique (name, surname, type, idPayment))
java
  • 1 1 个回答
  • 10 Views

1 个回答

  • Voted
  1. Best Answer
    Dmitriy
    2020-01-31T18:22:33Z2020-01-31T18:22:33Z

    我对hibernate不太熟悉(一点也不熟悉),但是,据我所知,问题出在此处:

    @Id
    @GeneratedValue(generator = "uuid")
    @GenericGenerator(name = "uuid", strategy = "uuid2")
    @Column(name = "PR_KEY", unique = true)  // вот тут надо убрать unique
    private String prKey;
    

    问题是在生成的查询中

    create table UserRecord (
      PR_KEY varchar2(255) not null unique, 
      name varchar2(100), 
      idPayment varchar2(64) not null, 
      riskMetric blob, 
      type varchar2(100) not null, 
      surname varchar2(100) not null, 
      version number(10,0) not null, 
      primary key (PR_KEY), 
      unique (name, surname, type, idPayment))
    

    你要求做同样的事情两次。Oracle 在您编写PR_KEY varchar2(255) not null unique和编写primary key (PR_KEY). 您需要一件事,在这种情况下,unique从描述中删除该字段 - 然后将执行请求。我怀疑,为了让 Hibernate 正确生成它,将其unique从注释中删除就足够了。

    • 1

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    根据浏览器窗口的大小调整背景图案的大小

    • 2 个回答
  • Marko Smith

    理解for循环的执行逻辑

    • 1 个回答
  • Marko Smith

    复制动态数组时出错(C++)

    • 1 个回答
  • Marko Smith

    Or and If,elif,else 构造[重复]

    • 1 个回答
  • Marko Smith

    如何构建支持 x64 的 APK

    • 1 个回答
  • Marko Smith

    如何使按钮的输入宽度?

    • 2 个回答
  • Marko Smith

    如何显示对象变量的名称?

    • 3 个回答
  • Marko Smith

    如何循环一个函数?

    • 1 个回答
  • Marko Smith

    LOWORD 宏有什么作用?

    • 2 个回答
  • Marko Smith

    从字符串的开头删除直到并包括一个字符

    • 2 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5