This is Controller Code
@PutMapping
@PreAuthorize("hasRole('USER')")
@RequestMapping("/update")
public ResponseEntity<?> userUpdate(MemberDto memberDto){
memberService.userUpdate(memberDto);
return new ResponseEntity<>("ok", HttpStatus.OK);
}
This is my Member Class code
@Entity
@Getter
@Setter
@Table(name = "member")
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class Member {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "name")
private String name;
private String email;
private String password;
private String providerId;
@Enumerated(EnumType.STRING)
private MemberRole role;
@Enumerated(EnumType.STRING)
private AuthProvider authProvider;
private String imageUrl;
//μΆκ°
private String phoneNumber;
@CreationTimestamp
private LocalDateTime createTime;
@UpdateTimestamp
private LocalDateTime updateTime;
@JsonIgnore
@OneToMany(mappedBy = "member")
private List<Post> posts = new ArrayList<>();
@JsonIgnore
@OneToMany(mappedBy = "member")
private List<Save> save = new ArrayList<>();
// @JsonIgnore
// @OneToMany(mappedBy = "member")
// private List<Follow> follow = new ArrayList<>();
@JsonIgnore
@OneToMany(mappedBy = "member")
private List<Image> image = new ArrayList<>();
}
This is DTO code
@Data
@NoArgsConstructor
public class MemberDto {
private Long id;
private String email;
private String password;
private String name;
private String phoneNumber;
@QueryProjection
public MemberDto(Long id, String email, String password, String name, String phoneNumber){
this.id = id;
this.email = email;
this.password=password;
this.name = name;
this.phoneNumber = phoneNumber;
}
}
This is Service Code
@RequiredArgsConstructor
@Service
public class MemberService {
@Autowired
private MemberRepository memberRepository;
public void userUpdate(MemberDto updateValue) {
memberRepository.updateMember(updateValue);
}
}
This is Repository(impl) code
@RequiredArgsConstructor
public class MemberRepositoryImpl implements MemberRepositoryCustom {
private final EntityManager em;
private final JPAQueryFactory queryFactory;
@Override
public void updateMember(MemberDto memberDto){
QMember qMember = QMember.member;
queryFactory.update(qMember)
.where(qMember.id.eq(memberDto.getId()))
.set(qMember.email, memberDto.getEmail())
.set(qMember.password, memberDto.getPassword())
.set(qMember.name, memberDto.getName())
.set(qMember.phoneNumber, memberDto.getPhoneNumber())
.execute();
}
}
And This is my frontend (react)code send as json
{id: 7, name: '111', email: '111@111.com1', password: '12313', phonenumber: '123123'}
email: "111@111.com1"
id: 7
name: "111"
password: "12313"
phonenumber: "123123"
I try to update myDB use member ID As you can see use querydsl with
.where(qMember.id.eq(memberDto.getId()))
This code in Repository class
so I expecte nativequery like
email: "111@111.com1" id: 7 name: "111" password: "12313" phonenumber: "123123"
update member(tablename) set name = 111, password = 123123, ..... where id = 7
But querydsl throw Error
java.lang.IllegalArgumentException: eq(null) is not allowed. Use isNull() instead
I Think my code is something wrong but I can't find it.
And also chrome console throw error
error: "Internal Server Error"
path: "/user/update"
status: 500
timestamp: "2021-10-12T21:04:00.658+00:00"
Internal server error so I confident that my backend Code is wrong
please help me