Skip to content

Instantly share code, notes, and snippets.

@jaimemin
Created October 2, 2023 17:04
@Getter
@MappedSuperclass
public class BaseEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@CreatedBy
@Column(updatable = false)
private String createdBy;
@CreatedDate
@Column(updatable = false)
private LocalDateTime createdAt = LocalDateTime.now();
@LastModifiedBy
private String modifiedBy;
@LastModifiedDate
private LocalDateTime modifiedAt = LocalDateTime.now();
}
@Getter
@Entity
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Member extends BaseEntity {
private String name;
@ManyToOne
@JoinColumn(name = "TEAM_ID", foreignKey = @ForeignKey(name = "FK_TEAM_ID"))
private Team team;
public void setTeam(Team team) {
this.team = team;
team.getMembers().add(this);
}
}
@Getter
@Entity
@NoArgsConstructor
@AllArgsConstructor
public class Team extends BaseEntity {
private String name;
@Setter
@OrderBy("id asc")
@BatchSize(size = 1000)
@OneToMany(fetch = FetchType.LAZY, mappedBy = "team", cascade = CascadeType.ALL)
private List<Member> members = new ArrayList<>();
public Team(String name) {
this.name = name;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment