0

The problem is that by adding a "message" object type to the "StoreActivity" entity, the first time, it does so without any problem, when iterating a second time, the program throws the exception:Multiple representations of the same entity

I have tried in the parent entity with all types of "cascades" and it does not work

Entity StoreActivity :

@Entity
@Table(name="store_activities")
public class StoreActivity implements Serializable {

    @EmbeddedId
    StoreActivityPk storeActivityPk = new StoreActivityPk();


    @ManyToOne
    @JoinColumn(name = "store_id", insertable = false, updatable = false)
    @MapsId("storeId")
    private Store store;

    @ManyToOne
    @JoinColumn(name = "activity_id", insertable = false, updatable = false)
    @MapsId("activityId")
    private Activity activity;


    @NotEmpty
    @Column(length = 500, nullable=true)
    private String comment;

    @OneToMany(fetch = FetchType.LAZY, cascade = {CascadeType.ALL,CascadeType.DETACH,CascadeType.PERSIST,CascadeType.REFRESH,CascadeType.REMOVE})
    @JoinColumns({
        @JoinColumn(name="date_activity", referencedColumnName="dateActivity"),
        @JoinColumn(name="store_id", referencedColumnName="store_id"),
        @JoinColumn(name="activity_id", referencedColumnName="activity_id"),
        @JoinColumn(name="store_activity_hour", referencedColumnName="storeActivityHour")
    })
    private List<Message> messages;

       //Getters and setters ...
}

StoreActivityPk :

@Embeddable
public class StoreActivityPk implements Serializable{

    private Long activityId;

    private Long storeId;

    @Temporal(TemporalType.DATE)
    private Date dateActivity;

    @Temporal(TemporalType.TIME)
    private Date storeActivityHour;
}

Message entity :

@Entity
@Table(name = "messages")
public class Message implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long messageId;

    @NotEmpty
    @Column(length = 1000, nullable=false)
    private String messageContent;

    @Column(length = 1, nullable=false)
    private Boolean messageRead;

    @OneToOne(cascade = CascadeType.ALL)
    @JoinColumn(name="user_id")
    private UserCheck userCheckSender;

    @Temporal(TemporalType.TIMESTAMP)
    private Date dateMessage;

    //Getters and setters
}

Controller :

public class StoreActivityController {
    @PostMapping("/save")
    public String save(@Valid Message message, BindingResult result, Model model, RedirectAttributes flash,
            SessionStatus sessionStatus, Authentication authentication,
            @RequestParam(name = "storeId", required = true) Long storeId,
            @RequestParam(name = "activityId", required = true) Long activityId,
            @RequestParam(name = "dateActivity", required = true) @DateTimeFormat(pattern="yyyy-MM-dd") Date dateActivity) {

        if (result.hasErrors()) {
            model.addAttribute("title", "Mensajes");
            model.addAttribute("subtitle", "Mensajes de la actividad diaria");
            return "frontend/message/activitymessage";
        }

        UserCheck userCheck = (UserCheck) authentication.getPrincipal();

        message.setUserCheckSender(userCheck);

        StoreActivity storeActivity = storeActivityService.findById(activityId, storeId, new Date());

        storeActivity.addMessage(message);

        storeActivityService.saveStoreActivity(storeActivity);

        sessionStatus.isComplete();

        flash.addFlashAttribute("success", "Mensaje Enviado");

        return "redirect:/message/activity/" + storeActivity.getStoreActivityPk().getActivityId() + "/store/"
                + storeActivity.getStoreActivityPk().getStoreId();
    }

}

Actual result console :

2019-08-08 17:44:54.918 WARN 5024 --- [io-8090-exec-10] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [org.springframework.dao.InvalidDataAccessApiUsageException: Multiple representations of the same entity [cl.tricotcorp.app.checklist.models.entity.UserCheck#1] are being merged. Detached: [cl.tricotcorp.app.checklist.models.entity.UserCheck@8f06f5d]; Managed: [cl.tricotcorp.app.checklist.models.entity.UserCheck@46781997]; nested exception is java.lang.IllegalStateException: Multiple representations of the same entity [cl.tricotcorp.app.checklist.models.entity.UserCheck#1] are being merged. Detached: [cl.tricotcorp.app.checklist.models.entity.UserCheck@8f06f5d]; Managed: [cl.tricotcorp.app.checklist.models.entity.UserCheck@46781997]]

K.Nicholas
  • 10,956
  • 4
  • 46
  • 66
Andres Carvajal
  • 141
  • 1
  • 2
  • 13

0 Answers0