gpt4 book ai didi

java - RestController 返回 500 错误,没有堆栈跟踪

转载 作者:太空宇宙 更新时间:2023-11-04 13:15:34 25 4
gpt4 key购买 nike

我像这样定义UserControllerUserRepositoryUser

UserController.java

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

import org.apache.commons.lang3.RandomStringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.crypto.codec.Hex;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import com.zusn.domain.User;
import com.zusn.repository.UserRepository;

@RestController
@RequestMapping(value = "/user")
public class UserController {
@Autowired
private UserRepository userRepository;

@RequestMapping(value = "/create", method = RequestMethod.POST)
public User createUser(@RequestBody User newUesr) throws NoSuchAlgorithmException{
User user = userRepository.findByUidAndDevice(newUesr.getUid(), newUesr.getDevice());
if(user == null){
MessageDigest md = MessageDigest.getInstance("SHA");
Long now = System.nanoTime();
md.update(now.byteValue());
String random = RandomStringUtils.randomAlphabetic(32);
md.update(random.getBytes());
newUesr.setConsumerKey(String.valueOf(Hex.encode(md.digest())));
return userRepository.save(newUesr);
}else{
return user;
}
}
}

UserRepository.java

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;

import com.zusn.domain.Devices;
import com.zusn.domain.Providers;
import com.zusn.domain.User;

@Repository
public interface UserRepository extends JpaRepository<User, Long>{
/**
*
* @param uid UID
* @param provider Profider ex) twitter, google+, facebook
* @return User
*/
public User findByUidAndProvider(@Param("uid") String uid, @Param("provider") Providers provider);

/**
*
* @param uid UID
* @param devices Device ex) iOS, Android
* @return User
*/
public User findByUidAndDevice(@Param("uid")String uid, @Param("device") Devices device);
}

用户.java

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToOne;
import javax.persistence.Table;


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

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", nullable = false)
private Long id;

@Column(name = "uid", nullable = false)
private String uid;

@Column(name = "provider")
private Providers provider;

@Column(name = "device", nullable = false)
private Devices device;

@Column(name = "consumer_key", nullable = false, unique = true)
private String consumerKey;

@OneToOne(cascade = CascadeType.ALL, fetch=FetchType.LAZY)
private Profile profile;



public User() {
super();
}

public User(String uid, Providers providers, String consumerKey) {
super();
this.uid = uid;
this.provider = providers;
this.consumerKey = consumerKey;
}

public String getConsumerKey() {
return consumerKey;
}

public void setConsumerKey(String consumerKey) {
this.consumerKey = consumerKey;
}

public User(Providers provider){
this.provider=provider;
}

public Long getId() {
return id;
}

public void setId(Long id) {
this.id = id;
}

public String getUid() {
return uid;
}

public void setUid(String uid) {
this.uid = uid;
}

public Providers getProvider() {
return provider;
}

public void setProvider(Providers provider) {
this.provider = provider;
}

public Profile getProfile() {
return profile;
}

public void setProfile(Profile profile) {
this.profile = profile;
}

public Devices getDevice() {
return device;
}

public void setDevice(Devices device) {
this.device = device;
}

}

当 User 不存在时,即处理第一个 if 语句时,此方法返回新的 User 对象。但是当User已经存在时,它返回状态码500。
然后当它返回 500 错误时它没有打印堆栈跟踪。

所以我不确定为什么它返回 500 错误。请告诉我这段代码有什么问题以及为什么它返回 500 错误。

最佳答案

如果没有堆栈跟踪,很难猜测问题所在。也许@NoOne是对的,但也许你在旧开发留下的数据库中有一个独特的约束。

如果您没有看到堆栈跟踪客户端,您可以输入 this snipped获取堆栈跟踪服务器端。因为 5xx 错误只是告诉我们这一点。服务器出错。

关于java - RestController 返回 500 错误,没有堆栈跟踪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33568992/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com