gpt4 book ai didi

hibernate - 无法将标识列键生成与 ( TABLE_PER_CLASS ) 一起使用

转载 作者:行者123 更新时间:2023-12-03 05:02:45 25 4
gpt4 key购买 nike

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;
}
}

给我这个异常(exception):

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

生成 ID 的最佳且最方便的方法是什么? 我不想改变我的继承策略。

最佳答案

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

尝试:

@GenerateValue(strategy = GenerationType.TABLE)

关于hibernate - 无法将标识列键生成与 <union-subclass> ( TABLE_PER_CLASS ) 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/916169/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com