当前位置: 首页 > 知识库问答 >
问题:

Hibernate映射思维错误

段超
2023-03-14

我有2个数据库表。First在其中有交易。每个交易都有一个ID。这个ID也在我的第二个表中找到。第二个表包含收费,但我的第一个表没有有关收费的信息。现在我必须通过冬眠映射获得连接到1个交易的所有费用,但我不想有它在两个方向。

贸易类:

public class Trade {
    @Id
    @Column(name = "ID")
    private Long tradeTag;

    @ElementCollection
    @CollectionTable(name = "VIE_CHARGES", joinColumns = 
    @JoinColumn(name="TRADE"))
    private List<Charge> charges;
}
public class Charge implements Serializable{

    private static final long serialVersionUID = 1L;
    @Id
    private String chargeType;
    @Id
    @Column(name="TRADE")
    private Long tradeTag;
}
create view VIE_CHARGES as 
select CHRG_TYPE AS CHARGETYPE
,TRAD_TAG AS TRADE
from TRADE_CHARGE
create VIEW VIE_TRADE AS 
select TRAD_TAG as ID
from TRADE 

共有1个答案

洪彬
2023-03-14

如果charge对象不需要自己的生命周期(没有自己的标识符,没有被多个交易引用,不应该单独存在,并且应该与它的交易一起删除),您可以将它映射为值类型的@ElementCollection(@Embeddable)。

映射的表和id列名可以通过@collectiontable@joincolumn批注设置。它的默认值是“trade_charges”和“trade_id”。

@ordercolumn注释只是一个小小的性能提升,您只有在面临集合的大量更改时才需要它。它将索引列添加到trade_charges表中,以标识update/delete语句中的行。

@Entity
public class Trade {

    @Id
    @Column(name = "ID")
    private Long tradeTag;

    @ElementCollection
    @CollectionTable(name = "charges", joinColumns = @JoinColumn(name="ID"))
    @OrderColumn
    private List<Charge> charges;

}

而罪名:

@Embeddable
public class Charge {

    private String chargeType;

}
 类似资料:
  • 我正在使用Hibernate和JPA注释来映射我的类。当hibernate尝试映射这个类时,我遇到了一个问题 我的Social alStat类是: 我得到了这个错误: 我猜发生这种情况是因为我试图映射到一个基本类,但@ElementCollection注释不应该解决这个问题吗? 我的item类如下所示:

  • 我有一个产品数据库。我已经创建了一个简单的Hibernate项目来从数据库中检索所有的产品。但是,我在编译代码时出现了以下异常: 令人惊讶的是,将prodcuts添加到数据库中可以正常工作。

  • 我正在使用与共享主键一对一映射。

  • 我刚开始冬眠。写一个复合字体。当我运行代码时,我得到一个错误。所有物 映射的列数错误:请帮助我缺少什么? 我的组合类型如下 我的域类股票有五个属性。(股票ID、股票代码、股票名称、状态、股票描述) 我需要声明字段股票描述为复合字段类型。 } 当我尝试执行股票插入时。我得到的错误错误创建bean与名称 在类路径资源[spring/config/./database/Hibernate.xml]中定义

  • 下列的 XML 映射应该是很直白的。例如: <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hib

  • 问题内容: 我需要预先将未实现接口的枚举映射到现有数据库,该数据库使用将该枚举存储在与所有者类相同的表中。 在这种情况下应如何处理映射?持久化到数据库不会改变,因为实现该接口的所有枚举都将具有不同的值,但是我不确定应如何从数据库中检索对象(我是否需要自定义映射器,它将尝试实例化一个使用指定的enum类进行枚举吗?Hibernate本身是否支持此功能?)。 问题答案: 可以创建一个自定义(例如thi