【发布时间】:2015-06-06 15:02:36
【问题描述】:
我在使用 JPA 时遇到问题。
我必须要桌子:
-----------------
| TableA |
|---------------|
| ID: INT |
| ... |
| ESTATUS1: INT |
| ESTATUS2: INT |
-----------------
-----------------
| EstatusTags |
|---------------|
| COD: VARCHAR |---> COD and VALUE are a concatenated PK
| VALUE: INT |
| DESC: VARCHAR |
-----------------
EstatusTags 是一个表,用于存储给定 COD 对 [VALUE, DESC] 的集合。
在我使用 JPA 之前,我曾经以这样的方式查询此类数据:
SELECT ID, ESTATUS1, ESTATUS2, E1.DESC DESC1, E2.DESC DESC2
FROM TABLEA A
INNER JOIN ESTATUSTAGS E1 ON E1.COD = "a_estatus1"
AND E1.VALUE = A.ESTATUS1
INNER JOIN ESTATUSTAGS E2 ON E2.COD = "a_estatus2"
AND E2.VALUE = A.ESTATUS2
我正在尝试使用 JPA 使用两个实体类对此进行建模:
@Entity
@Table(name = "EstatusTags")
public class EstatusTags implements Serializable {
@EmbeddedId
private ValueTagPK id;
@Column(name="VVA_DESC")
private String desc;
@Column(name="VVA_ORDEN")
private Integer orden;
}
@Entity
@Table(name = "TableA")
public class A implements Serializable {
@Column(name="ID")
private String desc;
@OneToOne(???)
private EstatusTag estatus1;
@OneToOne(???)
private EstatusTag estatus2;
}
我对如何建模关系有很大的疑问。可以用注释来完成吗?有必要使用 JPQL 来适应这种结构吗?
我希望有人可以帮助我。
非常感谢。
【问题讨论】:
-
在
Adesc类中,字符串被映射到ID列,根据您的表,该列是一个整数。那没有意义。在表A中,ID 是主键吗?还有A类引用EstatusTag,因为你的类被命名为EstatusTags