- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Hibernate,并且有两个表 STUDENTS 和 DORM_ROOMS,它们与组合键相关:
STUDENTS table:
CAMPUS(String) Part of Composite Key
STUDENT_ID (int) Part of Composite Key
NAME (String)
...
DORM_ROOMS table:
CAMPUS(String) Part of Composite Key
STUDENT_ID (int) Part of Composite Key
ROOM_NUMBER(int)
...
这种关系是一对一的,因为一个学生可以与一个宿舍关联,而一个宿舍又与一个学生关联(哇 - 一个私有(private)房间!)。然而,并非所有学生都有宿舍。
我的初始代码(精简)如下所示:
FOR STUDENTS:
@Embeddable
public class StudentsPK implements Serializable {
@Column(name = "CAMPUS")
private String Campus;
@Column(name = "STUDENT_ID")
private String StudentID;
...
}
@Entity
@Table(name = "STUDENTS")
public class Students implements Serializable {
@EmbeddedId
private StudentsPK studentsPK;
...
}
FOR DORM_ROOMS:
@Embeddable
public class DormRoomsPK implements Serializable {
@Column(name = "CAMPUS")
private String Campus;
@Column(name = "STUDENT_ID")
private String StudentID;
...
}
@Entity
@Table(name = "DORM_ROOMS")
public class DormRooms implements Serializable {
@EmbeddedId
private DormRoomsPK dormRoomsPK;
...
}
假设数据库架构已定义并创建。特别是,CAMPUS+STUDENT_ID 是 STUDENTS 的 PK,CAMPUS+STUDENT_ID 是 DORM_ROOMS 的 FK,充当该表中的 PK。此时,我可以成功地将一行插入到 STUDENTS 中,并将一行插入到 DORM_ROOMS 中。即使学生没有宿舍,我也可以从 STUDENTS 检索任何学生。然而,我还没有“告知”Hibernate这两个表之间的关系。这就是我困惑的地方。
我尝试使用“JOIN”注释来“关联”这两个表,但我发现这会导致任何尝试获取没有宿舍的学生的操作都会返回空结果集。我想这是因为如果“JOIN”声明表始终被视为已连接,那么加入没有宿舍且 DORM_ROOMS 表中没有匹配行的学生将导致空结果集。
由于使用“JOIN”注释不起作用,我如何修改代码来描述两个表之间的关系,但仍然允许我获取没有匹配宿舍房间的学生?
谢谢。
最佳答案
听起来您正在寻找 @OneToOne annotation ,它还能够指定关系是否为 optional 。 JBoss JPA 2.1 docs 中描述了一些示例。 ,这是其中之一。
Example 3: One-to-one association from an embeddable class to another entity.
@Entity
public class Employee {
@Id int id;
@Embedded LocationDetails location;
...
}
@Embeddable
public class LocationDetails {
int officeNumber;
@OneToOne ParkingSpot parkingSpot;
...
}
@Entity
public class ParkingSpot {
@Id int id;
String garage;
@OneToOne(mappedBy="location.parkingSpot") Employee assignedTo;
}
关于java - 如何配置(可选)一对一复合主键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25836688/
我正在尝试用 Swift 编写这段 JavaScript 代码:k_combinations 到目前为止,我在 Swift 中有这个: import Foundation import Cocoa e
我是一名优秀的程序员,十分优秀!