当前位置: 首页 > 面试题库 >

无法将身份列密钥生成用于 (TABLE_PER_CLASS)

满自明
2023-03-14
问题内容

com.something.SuperClass:

@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public abstract class SuperClass implements Serializable {
    private static final long serialVersionUID = -695503064509648117L;

    long confirmationCode;

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO) // Causes exception!!!
    public long getConfirmationCode() {
        return confirmationCode;
    }

    public void setConfirmationCode(long confirmationCode) {
        this.confirmationCode = confirmationCode;
    }
}

com.something.SubClass:

@Entity
public abstract class Subclass extends SuperClass {
    private static final long serialVersionUID = 8623159397061057722L;

    String name;

    @Column(nullable = false)
    public String getName() {
        return name;
    }

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

给我这个例外:

Caused by: org.hibernate.MappingException: Cannot use identity column key
generation with <union-subclass> mapping for: com.something.SuperClass

对我来说,生成ID的最好和最方便的方法是什么? 我不想更改继承策略。


问题答案:

这里的问题是您将“每类表”继承与混合在一起GenerationType.Auto。考虑MsSQL中的标识列。它基于列。在“每类表”策略中,每个类使用一个表,每个表都有一个ID。

尝试:

@GeneratedValue(strategy = GenerationType.TABLE)



 类似资料:
  • 问题内容: 我试图将一个示例项目导入到Eclipse中,并且在运行该应用程序时遇到以下给定的错误。 按照此 SO链接,我已更改了 至 要么 但是没有用。 这是代码: User.java: 从applicationContext.xml: 问题答案: 您可以使用告诉Hibernate使用序列来生成您的ID 这个配置基本上告诉Hibernate使用一个名为ID_SEQ的数据库序列来生成该对象的ID。如

  • 我正在尝试创建一个公钥以允许我推送到Git,但我的. ssh文件夹尚未创建。 以下是我运行的命令: $ssh-keygen-t rsa-Cemaill@me.com 生成公共/私有rsa密钥对 输入保存密钥的文件(/h/.ssh/id\u rsa): 这就是H:驱动器配置、数据、配置文件、配置文件中的全部内容。V2 我认为有一个问题,因为当我得到提示输入文件,其中保存密钥(/h//. ssh/id

  • 我试图为某些设备生成密钥时出错。我能够在运行4.4.2的三星Galaxy Note上重现错误。 我创建了一个小应用程序,只能通过从Android开发者页面“生成新私钥”下的https://developer.android.com/training/articles/keystore.html逐行复制代码来生成密钥 错误似乎发生在kpg.generateKeyPair(),在Android Key

  • 我以前读过一篇文章,内容是关于服务器发送超过1024位的密钥时引发的错误“无法生成DH密钥对”。下载JCE无限jar应该可以解决这个问题。在测试环境中,我遇到了以下情况,对于同一个web服务器,如果我使用Java 6,则在执行https查询时不会出现任何错误,但如果我使用Java7,则会出现“无法生成DH密钥对”。 我尝试替换JCE无限的jar文件,但仍然得到同样的错误。该错误自2007年以来一直

  • 我已经使用openssl生成了一个私钥,并在Terminal/command中执行以下命令: null 所有这些都无法解密我的密钥。下面是我根据这篇文章编写的类[https://stackoverflow.com/questions/35276820/decrypting-an-openssl-pem-encoded-rsa-privest-key-with-java]: 我对安全问题一无所知,所

  • 我正在尝试用Java编写一个简单的密码管理器。我想用AES 256位加密用存储的密码加密文件。此外,我希望用户能够解密的文件与密码。当阅读其他在线帖子时,他们几乎都强调简单地使用密码作为密钥是不安全的,他们提到使用随机盐来增加安全性。但我不明白如何在生成密钥时使用随机盐。如果我从用户的密码和随机的salt创建密钥,那么当他们试图解密他们的文件时,我怎么知道salt是什么呢?这让我完全糊涂了。 目前