- 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/
我们有以下类(class) @Entity @Inheritance(strategy = InheritanceType.SINGLE_TABLE) // optional annotation a
我有两个实体 User 和 Candidat ,其中 Candidat 扩展了类 User ,如下所示: 用户实体: @Entity @Table(name="users") @Inheritance
我有几个实体与具有一个基类的 @DiscriminatorValue 共享同一个数据库表: @Entity(name = "base_details") @DiscriminatorColumn(na
我有这个父类: @Entity @Inheritance(strategy = InheritanceType.JOINED) @Table(name = "BSEntity") @Discrimin
我有一个看起来像这样的实体 @Entity @Inheritance(strategy = InheritanceType.SINGLE_TABLE) @DiscriminatorColumn(nam
给定: @Inheritance(strategy=InheritanceType.SINGLE_TABLE) @DiscriminatorColumn(name="postType", discri
我正在使用具有连接继承和如下所示的数据库结构的 JPA: ACTION --------- ACTION_ID ACTION_MAPPING_ID ACTION_TYPE DELIVERY_CHANN
我有具有连接类型的实体的继承关系。 @Entity @Table(name = "MSM_SUBSCRIPTION") @DiscriminatorColumn(name = "SUBSCRIPTIO
Hibernate 有强大的机制可以使多个实体共享数据库中的同一个表。对我来说,能够获取所有记录(无论子类型如何)将是最重要的。然而这似乎不起作用。 假设我们有一些标准设置: @Entity @Tab
我有以下实体: @Table(name="Animal") @Entity @Inheritance(strategy = InheritanceType.SINGLE_TABLE) @Discrim
在 hibernate 中使用 DiscriminatorValue 注解的最佳场景和时间是什么时候? 最佳答案 这两个链接最能帮助我理解继承概念: http://docs.oracle.com/ja
我正在尝试实现 JPA 实体之间的继承关系。 借用示例: http://openjpa.apache.org/builds/1.0.2/apache-openjpa-1.0.2/docs/manual
我有一个经典的 Hibernate @Inheritance(strategy=InheritanceType.SINGLE_TABLE) 和 @DiscriminatorFormula。它工作正常。
我是一名优秀的程序员,十分优秀!