ManyToOne 关系,其中通过连接两列引用一列
ManyToOne relation where a column is referenced with concatenation of two columns
我正在尝试在两个实体之间创建 ManyToOne 关系。表格看起来像这样:
Table:EQUIPMENT
----------------
ID (Integer PK)
FIXTURE_NO(Varchar 16)
Table:FIXTURE
----------------
ID(Integer PK)
TNO(Varchar 4)
DNO(Varchar 12)
在创建实体时,我想创建多对一关系,其中 fixture No = tNo+dNo(这两个值的串联。)
以下是我的模型的代码示例:
@Entity
@Table(name="EQUIPMENT", schema="EQP")
public class Equipment {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@NotNull
@Column(unique=true)
private int id;
@NotNull
@ManyToOne
@JoinColumn(name="FIXTURE_NO")
private Fixture fixture;
//getters and setters etc...
}
@Entity
@Table(name="FIXTURE", schema="FIX")
public class Fixture {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@NotNull
@Column(unique=true)
private int id;
@Size(max=4)
@Column(name="TNO")
private String tNo;
@Size(max=12)
@Column(name="DNO")
private String dNo;
//getters and setters etc...
}
现在,我看到 ManyToOne 映射与 EQUIPMENT.FIXTURE_NO 和 FIXTURE.ID 有关,但我找不到将 TNO 和 DNO 的串联映射到 [=26= 的方法].
感谢您的帮助!
它不适用于串联,但如果您将数据模型更改为:
Table:EQUIPMENT
----------------
ID (Integer PK)
TNO(Varchar 4)
DNO(Varchar 12)
Table:FIXTURE
----------------
ID(Integer PK)
TNO(Varchar 4)
DNO(Varchar 12)
您可以添加这样的关系:
@ManyToOne
@JoinColumns({
@JoinColumn(name="TNO", referencedColumnName="TNO"),
@JoinColumn(name="DNO", referencedColumnName="DNO")
})
private Fixture fixture;
我正在尝试在两个实体之间创建 ManyToOne 关系。表格看起来像这样:
Table:EQUIPMENT
----------------
ID (Integer PK)
FIXTURE_NO(Varchar 16)
Table:FIXTURE
----------------
ID(Integer PK)
TNO(Varchar 4)
DNO(Varchar 12)
在创建实体时,我想创建多对一关系,其中 fixture No = tNo+dNo(这两个值的串联。)
以下是我的模型的代码示例:
@Entity
@Table(name="EQUIPMENT", schema="EQP")
public class Equipment {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@NotNull
@Column(unique=true)
private int id;
@NotNull
@ManyToOne
@JoinColumn(name="FIXTURE_NO")
private Fixture fixture;
//getters and setters etc...
}
@Entity
@Table(name="FIXTURE", schema="FIX")
public class Fixture {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@NotNull
@Column(unique=true)
private int id;
@Size(max=4)
@Column(name="TNO")
private String tNo;
@Size(max=12)
@Column(name="DNO")
private String dNo;
//getters and setters etc...
}
现在,我看到 ManyToOne 映射与 EQUIPMENT.FIXTURE_NO 和 FIXTURE.ID 有关,但我找不到将 TNO 和 DNO 的串联映射到 [=26= 的方法].
感谢您的帮助!
它不适用于串联,但如果您将数据模型更改为:
Table:EQUIPMENT
----------------
ID (Integer PK)
TNO(Varchar 4)
DNO(Varchar 12)
Table:FIXTURE
----------------
ID(Integer PK)
TNO(Varchar 4)
DNO(Varchar 12)
您可以添加这样的关系:
@ManyToOne
@JoinColumns({
@JoinColumn(name="TNO", referencedColumnName="TNO"),
@JoinColumn(name="DNO", referencedColumnName="DNO")
})
private Fixture fixture;