Problem when embedding Spring JPA data

I am new to JPA and I am facing a problem when creating a script.
I have 3 tables.

"User" has UserId and other user Details. A Row in this is created when the User registers.  
"Event" has EventId and other Event Details. A Row is created when a new Event is created.
"Event_role_master" table has Role ID and other columns. Has Pre-loaded set 
of Roles.  
"Event-member" table has UserID,EventId,RoleId and TimeStamp.

I have a scenario, for example, when Existing users register for an available event for a specific role, user ID, event ID, role ID should be inserted into the table "Event_Member".
I created a many-to-many mapping between the first three tables, using 4th position as the mapping table, but most code examples indicate that when data is stored in the User, Event, Role table, it will create entry in the -member table event. But in my case, I do not need to insert into the first 3 tables, since it will contain data already. I just want to get User, Event, Role from the table and put it in the fourth table. I will receive data using JSON (REST service). Can someone please help or show a code example on how to achieve this scenario. Thanks in advance.

Edit1: Can we use the inheritance strategy in JPA for this.

    @Entity
    @Table(name="event_organiser_role")
    public class EventRole {

        @Id
        @GeneratedValue(strategy=GenerationType.AUTO)
        private Long id;
        private String role;
        private Timestamp created_at;
        private Timestamp updated_at;
        private String created_by;
        private String updated_by;
        private boolean is_deleted;

        @OneToOne(cascade=CascadeType.ALL)
        private PointMaster point;

        @OneToMany(mappedBy="role",cascade=CascadeType.ALL,orphanRemoval=false)
        private Set<EventMember> eventMember;


@Entity
@Table(name="user")
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;    
    private String name;    
    private String email;
    private String mobile;
    private int points;
    private Timestamp created_at;
    private Timestamp updated_at;
    private String created_by;
    private String updated_by;
    private boolean is_deleted;
    @Transient
    private Event event;
    @Transient
    private EventRole eventrole;

    @OneToMany(mappedBy = "user", cascade = CascadeType.ALL)
    private Set<UserBusiness> userBusiness;

    @OneToOne(mappedBy = "user", cascade = CascadeType.ALL)
    private UserAccount userAccount;

    @JsonIgnore
    @OneToMany(mappedBy="user",cascade=CascadeType.ALL,orphanRemoval=false)
    private Set<EventMember> eventMember;

@Entity
@Table(name="event_member")
public class EventMember implements Serializable{

    private static final long serialVersionUID = 3344138873871956378L;

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    private Timestamp created_at;
    private Timestamp updated_at;
    private String created_by;
    private String updated_by;
    private boolean is_deleted;

    @Id
    @ManyToOne
    @JoinColumn(name="event")
    private Event event;

    @Id
    @ManyToOne
    @JoinColumn(name="user")
    private User user;

    @Id
    @ManyToOne
    @JoinColumn(name="event_organiser_role")
    private EventRole role;

Data entry method (does not work):

@Override
    public void registerEvent(User user){
        EventMember member=new EventMember();
        Event event=eventDAO.getEventByName(user.getEvent().getName());
        EventRole role=eventDAO.getRoleByName(user.getEventrole().getRole());
        user=(User) getUserbyValue(user.getEmail());
        member.setEvent(event);
        member.setRole(role);member.setUser(user);
        System.out.println(member);
        userDAO.addUser(user);
        eventDAO.createEvent(event);
        eventSer.createEventRole(role);
        //userDAO.registerEvent(member);
    }  

JSON JSON User-email, Event_Name, Role-Name. .

+4
1

, .

@Id
@ManyToOne
@JoinColumn(name="user")
private User user

1. @ID 2. @JoinColumn (name= "UserID)

@ManyToOne
@JoinColumn(name="UserID")
private User user

"UserID" "event-member" "user"

Event EventRole

+2

Source: https://habr.com/ru/post/1677463/


All Articles