我正在尝试为旧的数据库模式编写一个hibernate适配器.此架构没有专用的id列,但使用大约三个其他列来连接数据.
在某些表格中,我需要使用合并.这是我到目前为止提出的:
关于定义:
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) 我面临一个关于如何管理特定模型的映射的问题。
这是一个多租户应用,我们已经选择了在每个实体中都包含“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)