Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 티스토리챌린지
- 오블완
- 버전 문자열 비교
- pooled-lo
- 1*1000
- createEntityGraph
- apatch poi
- MSSQL
- getEntityGraph
- 운동해서 광명찾자
- @EntityListeners
- fractional seconds
- https
- load order
- EmbeddedId
- Protecle
- mysql =
- NamedEntityGraph
- spring boot
- +9:00
- MYSQL
- getDateCellValue
- RootGraph
- deserializer
- yml
- AuditingEntityListener
- sendFractionalSeconds
- mysql not equal null
- mysql equal null
- @CreateDate
Archives
- Today
- Total
Hello
[JPA] 일대일 조인 테이블 @EmbeddedId 사용 본문
728x90
@Embeddable, @EmbeddedId를 사용해 일대일 조인테이블 Entity 만드는 방법을 간단하게 정리합니다.
@Entity
public class Buff {
@Id
@GeneratedValue
private Integer id;
private Integer type;
private Integer value;
}
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
}
@Entity
public class BuffUser {
@EmbeddedId
private BuffUserPk id;
@MapsId("userId")
@ManyToOne
@JoinColumn(name = "user_id")
private User user;
@MapsId("buffId")
@ManyToOne
@JoinColumn(name = "buff_id")
private Buff buff;
}
@Embeddable
public class BuffUserPk implements Serializable {
private Long userId;
private Integer buffId;
}
+ 복합키 비식별 관계
@Entity
public class TestEntity {
private TestPk pk;
private String name;
@EmbeddedId
public TestPk getPk() {
return pk;
}
public void setPk(TmpPk pk) {
this.pk = pk;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
@Embeddable
public class TestPk implements Serializable {
private Integer id1;
private Integer id2;
public Integer getId1() {
return id1;
}
public void setId1(Integer id1) {
this.id1 = id1;
}
public Integer getId2() {
return id2;
}
public void setId2(Integer id2) {
this.id2 = id2;
}
}
+복합키 일대일 식별관계
부모 테이블의 기본 키 값을 자식 테이블의 기본키 값으로 사용한다. (PK, FK)
부모 테이블의 기본키가 복합키가 아니라면! 자식테이블에서 복합키로 구성 하지 않는다.
@Entity
public class User {
private Long id;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
...
}
@Entity
public class UserAlarm {
private Long userId;
private User user;
@Id
public Long getUserId() {
return userId;
}
public void setUserId(Long userId) {
this.userId = userId;
}
@MapsId
@OneToOne
@JoinColumn(name = "user_id")
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
...
}
728x90
'java' 카테고리의 다른 글
[Jackson] JsonSerializer, JsonDeserializer 커스텀하게 사용하는 방법 (0) | 2023.11.08 |
---|---|
Java MultipartFile to String (0) | 2023.10.25 |
JPA 기본키 생성 전략 (0) | 2023.09.07 |
Apache poi excel 읽기 빈 값(null), 숫자를 문자로 읽기 (0) | 2023.04.06 |
Daylight Saving Time(DST) in JAVA (0) | 2023.04.04 |