- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在使用带注释的 Hibernate 版本 3.3.2.GA。
我在两个类之间继承,前者:
@Entity
@Table(name = "SUPER_CLASS")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(
name="DISCR_TYPE",
discriminatorType= DiscriminatorType.STRING
)
@org.hibernate.annotations.Entity(mutable = false)
public class SuperClass { }
子类映射到二级表:
@Entity
@DiscriminatorValue("VALUE")
@org.hibernate.annotations.Entity(mutable = false)
@SecondaryTable(name = "V_SECONDARY_TABLE",
pkJoinColumns = @PrimaryKeyJoinColumn(name = "ID", referencedColumnName = "ID"))
public class SubClass extends SuperClass {
@Embedded
public Field getField() {
return getField;
}
}
其中字段由两个不同的字段组成
@Embeddable
public class Field {
@Column("FIELD_1") String field1
@Column("FIELD_2") String field2
}
现在,当我在子类上创建查询时,会在父类(super class)上搜索 FIELD_1 和 FIELD_2 字段,即使它们是在子类中定义的。
我无法在字段中的@Column注解中设置表格,因为Field类在某处被重用了。我需要在 SubClass 类中指定它。
如何指定在副表中查找该字段?
也在 Hibernate Forum 上
最佳答案
你应该使用table属性
@Column("FIELD_1", table="V_SECONDARY_TABLE")
更新
当一个可嵌入列被多个实体使用时,如果您只需要重新映射一个列,则应使用@AttributeOverride,如果多个列,则应使用@AttributeOverrides
@Entity
@SecondaryTable(name="OTHER_PERSON")
@AttributeOverride(name="address.street", column=@Column(name="STREET", table="OTHER_PERSON"))
public class Person {
private Address address;
@Id
@GeneratedValue
public Integer getId() { return id; }
public void setId(Integer id) { this.id = id; }
@Embedded
public Address getAddress() { return address; }
public void setAddress(Address address) { this.address = address; }
@Embeddable
public static class Address implements Serializable {
private String address;
public String getStreet() { return street; }
public void setStreet(String street) { this.street = street; }
}
}
关于java - Hibernate:@EmbeddedId、继承和@SecondaryTable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4155372/
我有两个在不同模式中具有相同名称的表,并且我正在尝试使用这些表和@SecondaryTable 创建一个实体。它给了我以下错误 InFlightMetadataCollector$DuplicateS
我想映射 one to many 中的两个实体时尚。 A->[B, B] 我想添加到 join table更多领域。 Pojos看起来像: @Entity @Table(name = "A", sch
我有两个表: 语言 CREATE TABLE language ( id BIGSERIAL, name TEXT NOT NULL UNIQUE, PRIMARY KEY (id)
我有一个实体。我想有选择地从辅助表加载有关实体的其他信息。我有以下映射。 @Entity @Table( name = "program", schema = "myschema" ) @Second
在我的场景中最好的解决方案是什么? 我有一个滞后数据库,想通过使用单个 hibernate 实体来访问数据。我希望 Java 部分尽可能简单。 我的数据库由三个表组成: 表 1(id,Att1,A
我知道,@SecondaryTable问题已发布多次,因此,如果有相同的问题(我还没有找到),请给我链接或建议。 我的数据库中有两个表(firstTable 和 secondTable),两个 POJ
我正在修改旧数据库,并且必须将一个表分成两个表。有很多代码引用我的实体类,因此我想使用 @SecondaryTable 来避免弄乱所有项目。 假设我有一个如下所示的 Employee 表: +----
我有一个 @ManyToMany 类型的关系与 @JoinTable协会。 问题是关系中的实体有自己的表,但有几个属性应该放在关联表中。 A_C我觉得 table 很好。 添加 @SecondaryT
我有一个非常简单的类层次结构,如下所示,每个子类都有一个 @DiscriminatorValue 枚举类型,效果很好。 抽象类: AbstractNode(映射到 Node 表的抽象类) 子类: Fi
我的模型中有一对多关系,其中子实体存储在两个表中。 @Entity @Table(name = "child1") @SecondaryTable(name = "child2", pkJoinCol
我正在使用带注释的 Hibernate 版本 3.3.2.GA。 我在两个类之间继承,前者: @Entity @Table(name = "SUPER_CLASS") @Inheritance(str
在我的数据库中,我有两个表,如下所示: CREATE TABLE IF NOT EXISTS `Lokal` ( `idLokal` int(11) NOT NULL AUTO_INCREMENT
我的架构的缩写版本: utility_company id int not null -- PK name varchar(255) not null utility_settings utility
为我的实习工作开发 JPA 2.0 合规性工具包。该套件的一部分用于覆盖角落案例。 @MappedSuperclass 没有原始表,因为它不是实体。JSR-317 声明了这个有趣的位: A class
我有两个表: part { int id; --> primary key, auto generated varchar poNo; varchar partNo;
Thera是oracle View vendor_view和表vendors(为简单起见,vendors表仅包含带有名称id的PK) create view vendor_view as se
我已经使用 SINGLE_TABLE with SecondaryTables 实现了继承层次结构. 这可以正常工作,但是当我的辅助表的字段为空(= Oracle 中的 null)时,对实体的下一次更
我有一个包含这些表的实体: @Entity @Table(name = "PM_ADJ_MULTI_YR_DETAILS") @SecondaryTables( { @SecondaryTable(n
我的代码如下所示: @Data @Accessors(chain = true, fluent = true) @Entity @Table(name = "T_FILE_META", indexes
我有一个 JPA 实体类,它使用 @SecondaryTable 关系来检索其一些字段。有一些针对该实体的查询只需要返回几个字段,所有字段都来自主表。 我希望使用 Spring Data JPA Pr
我是一名优秀的程序员,十分优秀!