鉴于这三个表:
CREATE TABLE USERS
(
USER_ID INT NOT NULL PRIMARY KEY,
NAME_FIRST VARCHAR(15),
NAME_LAST VARCHAR(20),
LOGIN_NAME VARCHAR(20) NOT NULL UNIQUE,
PASSWORD VARCHAR(20) NOT NULL,
...
);
CREATE TABLE PROJECTS
(
PROJECT_ID INT NOT NULL PRIMARY KEY,
PROJECT_NAME VARCHAR(255) NOT NULL UNIQUE,
...
);
CREATE TABLE LAST_PROJECTS
(
USER_ID INT NOT NULL PRIMARY KEY,
PROJECT_ID INT NOT NULL
);
这两个实体:
public class User
{
private Long userID;
...
private Project lastProject;
...
}
public class Project
{
private Long projectID;
private String projectName;
...
}
出于性能原因,Users表分为两部分 表:永久用户详细信息(或至少那些没有太大变化的用户详细信息) 一个用于临时用户详细信息;那些每天都在变化的人。所以 最后一个项目的主键位于last_projects表中。每个用户只有 此表中的一个条目。 鉴于这一切,我如何将项目休眠映射到用户实体?
答案 0 :(得分:0)
该关联是一对一关联,因此您需要@OneToOne
。它由两个实体之间的连接表实现,因此您需要@JoinTable
。
阅读the javadoc和hibernate文档以获取示例。
答案 1 :(得分:0)
我尝试了以下内容,它就像一个魅力:
<class ...>
<attribute ...>
...
<join table="LAST_PROJECTS" optional="true">
<key column="USER_ID" />
<many-to-one name="lastProject" column="PROJECT_ID"
class="Project" not-null="true" unique="true"/>
</join>
</class>
谢谢!