- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个经典的 Hibernate @Inheritance(strategy=InheritanceType.SINGLE_TABLE)
和 @DiscriminatorFormula
。它工作正常。但是,数据库中的 @DiscriminatorValue
有大约 500 个不同的值,我需要将其中大约 30 个映射到 Java 类(子类),其余映射到父 Java 类。
问题可以建模为 Animal 类的示例继承。
@Entity
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorFormula("...")
public class Animal implements Serializable {
...
@Column
public String getName() { ... }
}
因此,我在 Java 代码中使用 @DiscriminatorValue
定义了大约 30 个 Animal 子类。当 Hibernate 发现鉴别器的未知值时,它会抛出 WrongClassException
。但是,我需要将这些未知的鉴别器值映射到一个实体,最好是 Animal 类。 (在这种情况下,我只需要使用 getName() 方法。)
我知道一种解决方案是将 SQL CASE 放入 @DiscriminatorFormula
但随后我必须在那里声明所有 30 个已知的鉴别器值(当我需要添加其他值时还要加上更多)。所以我正在寻找更灵活的解决方案。
附言这是遗留代码,所以我无法更改模型。
最佳答案
tscho为我指明了正确的方向,因此我能够为我的案例找到解决方案。 @DiscriminatorValue
评估特殊值 @DiscriminatorValue("null")
和 @DiscriminatorValue("not null")
。第二个适合我。
@Entity
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorFormula("...")
@DiscriminatorValue("not null")
public class Animal implements Serializable {
...
@Column
public String getName() { ... }
}
关于java - 为 InheritanceType.SINGLE_TABLE 的未知 DiscriminatorValue 映射 Hibernate 实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11272660/
我正在尝试在 Hibernate 中实现一个非常简单的继承模型。基本上我有一个可以称为 A 的父类(super class),以及几个继承自 A 的子类。由于我看到的行为对所有这些行为都是相同的,因此
我尝试在 Doctrine 中使用继承类型,但是当我创建数据库时,它显示此错误消息: [Doctrine\Common\Annotations\AnnotationException] [Semant
我有两个类,“OrderBase”和“OrderPay”,我试图为其实现“InheritanceType.JOINED”类型的继承。 虽然 TABLE_PER_CLASS 和 SINGLE_TABLE
例如我们有这样的结构: @Entity @Table(name = "A") @Inheritance(strategy = InheritanceType.SINGLE_TABLE) @Discri
我试图在数据库中表示一个具有多种字段类型的可编辑表。我的方法如下: TABLES - uuid //Primary key - cols - rows - name VALUE -col //Key
我的类结构如下所示...我在这里实现了两种单独的策略,但根类的继承策略(即 InheritanceType.JOINED)正在整个层次结构中使用... @Entity @Inheritance(str
我刚开始使用 Hibernate,对 InheritanceType.JOINED 和 @PrimaryKeyJoinColumn 有疑问。 给定以下数据库表,其中员工引用人员,经理引用员工: cre
我在使用 hibernate 实现 InheritanceType.JOINED 策略时遇到问题。 我一直遇到这种异常: Caused by: javax.persistence.Persistenc
我正在努力让原生查询与 InheritanceType.JOINED 一起使用.来自 hibernate documentation我已经找到: 13.1.6. Handling inheritanc
大家好。 我正在尝试将一个一对多关联映射到一个实体,该实体是使用 @Inheritance(strategy=InheritanceType.JOINED) 映射的 .... @ManyToMany
我创建了以下场景: @javax.persistence.Entity @Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) public
我有以下类(class): AbstractEntity,它是我所有实体的父类(super class),存储所有实体使用的公共(public)字段,例如 id: @Entity @Inheritan
我正在使用 Hibernate JPA。 假设我有这些类: AbstractPerson |--> ConcreteEmployee |--> ConcreteCustomer 有没有办法让具体的类有
我有一个简单的 JOINED 文档层次结构: CREATE TABLE Documents ( id INTEGER NOT NULL, discriminator ENUM('officia
我有这样的东西.. 一种汽车类别,其中有多个座位中的一个座位。 Seat 有一个子类 LeatherSeat。 public class Car { private Seat seat; ..
有一些这样的类: @Entity @Table(name="person") @Inheritance(strategy=InheritanceType.JOINED) public class Pe
从 Hibernate 4.2 升级到 5.5.5 后,我的继承不再起作用。启动我的应用程序会引发以下错误: ERROR AssertionFailure:33 - HHH000099: an ass
给定一个由三个子实体 SubEntityA、SubEntityB 和 SubEntityC 扩展的 SuperEntity,您能否对 SuperEntity 执行条件查询以只检索 SubEntityB
我有一个经典的 Hibernate @Inheritance(strategy=InheritanceType.SINGLE_TABLE) 和 @DiscriminatorFormula。它工作正常。
在对谷歌进行了一些研究之后,我还没有发现任何人遇到我的问题,这就是我在这里发布的原因。 在我的应用程序中,我有三个实体:用户(抽象)、客户、代理。 客户和代理商扩展用户。这是用户的代码: @Entit
我是一名优秀的程序员,十分优秀!