相关疑难解决方法(0)

Hibernate和@JoinFormula:org.hibernate.mapping.Formula无法强制转换为org.hibernate.mapping.Column

我正在尝试为旧的数据库模式编写一个hibernate适配器.此架构没有专用的id列,但使用大约三个其他列来连接数据.

在某些表格中,我需要使用合并.这是我到目前为止提出的:

关于定义:

  • 汽车可以具有由汽车用户或汽车的用户组分配的元件.
  • 如果FORIGN_ELEMENT包含用户名,则定义为'u'
  • 如果FORIGN_ELEMENT包含组的名称,则定义为'g'
  • 这也意味着,一个表(CAR_TO_ELEMENT)被误用于将汽车映射到元素和汽车组到元素.我定义了一个超类CarElement和子类CarUserElement和CarGroupElement.
  • state是"active"或无趣的字符串
  • 我在其他地方设定了定义和陈述,我们不需要担心这一点.
  • 在连接表上使用DEP_NR.如果它为零,请使用USR_DEP_NR.我COALESCE(NULLIF())在原生SQL中成功完成了这项工作,并希望在Hibernate中使用Pojos实现相同的功能.

好的,我们在这里使用代码:

@Entity
@Table(name="CAR")
public class Car extends TableEntry implements Serializable {
    @Id
    @Column(name="DEP_NR")
    private int depnr;

    @Id
    @Column(name="USER_NAME")
    @Type(type="TrimmedString")
    private String username;

    @ManyToOne(fetch = FetchType.EAGER, targetEntity=CarGroup.class)
    @JoinColumns(value={ 
            @JoinColumn(name="GROUP_NAME"),
            @JoinColumn(name="DEP_NR"),
            @JoinColumn(name="state"),
    })
    private CarGroup group;

    @OneToMany(fetch=FetchType.EAGER, targetEntity=CarUserElement.class, mappedBy="car")
    private Set<CarUserElement> elements;
}
Run Code Online (Sandbox Code Playgroud)
@Entity
@Table(name="CAR_GROUP")
public class CarGroup extends TableEntry implements Serializable {
    @Id
    @Column(name="DEP_NR")
    private int depnr;

    @Id
    @Column(name="GROUP_NAME")
    @Type(type="TrimmedString")
    private String group;

    @ManyToOne(fetch = FetchType.EAGER, targetEntity=Car.class)
    @JoinColumns(value={ 
            @JoinColumn(name="GROUP_NAME"), …
Run Code Online (Sandbox Code Playgroud)

java sql hibernate

19
推荐指数
1
解决办法
6954
查看次数

Hibernate 复合键和重叠字段 - 如何避免列重复

我面临一个关于如何管理特定模型的映射的问题。

这是一个多租户应用,我们已经选择了在每个实体中都包含“tenant_id”,所以我们不必每次需要获取实体时都进行联合(实际上,这就是我问题的根源……)。

模型如下:

+--------------------+   +---------------+
|        Book        |   |    Author     |
+--------------------+   +---------------+
| id (pk)            |   | id (pk)       |
| tenant_id (pk)(fk) |   | tenant_id (pk |
| author_id (fk)     |   | name          |
| title              |   +---------------+
+--------------------+
Run Code Online (Sandbox Code Playgroud)

如您所见,tenant-id 位于每个实体中,并且是主键的一部分。我们使用@IdClass 来管理复合键。这是代码:

+--------------------+   +---------------+
|        Book        |   |    Author     |
+--------------------+   +---------------+
| id (pk)            |   | id (pk)       |
| tenant_id (pk)(fk) |   | tenant_id (pk |
| author_id (fk)     |   | name          |
| title              | …
Run Code Online (Sandbox Code Playgroud)

java hibernate composite-key multi-tenant

3
推荐指数
1
解决办法
1112
查看次数

标签 统计

hibernate ×2

java ×2

composite-key ×1

multi-tenant ×1

sql ×1