我是JPA的新手,并且想要创建一个具有以下关系的数据库:
|Participant|
|id : INT (PK) | id_event : INT (PK, FK) |
|Event|
|id : INT (PK) |
我完全迷路了,几乎看不出我发现的示例的语法:/
但是我知道我需要创建另一个类来包含PK的两个部分,这导致另一个问题:这个类可以是一个内部类(出于优化目的)吗?
我希望我不要问太多,但我真的很想得到它。
您的实体可能是这样的:
@Entity
public class Participant {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@OneToMany(fetch = FetchType.LAZY) // or any other relation
private List<Event> events;
// fields, constructors, getters, setters
}
@Entity
public class Event {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
// fields, constructors, getters, setters
}
在这种情况下,JPA将使用以下查询创建3个表(SQL方言因数据库而异,在这种情况下,我使用的是H2数据库):
CREATE TABLE Event (
id bigint GENERATED BY DEFAULT AS IDENTITY,
PRIMARY KEY (id)
);
CREATE TABLE Participant (
id bigint GENERATED BY DEFAULT AS IDENTITY,
PRIMARY KEY (id)
);
CREATE TABLE Participant_Event (
Participant_id bigint NOT NULL,
events_id bigint NOT NULL
)
Participant_Event
自动创建联接表以链接参与者和事件。
这是理解JPA实体关系的一个很好的例子。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句