错误信息:
at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:666)
at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:156)
at com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serializeContents(IndexedListSerializer.java:113)
at com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serialize(IndexedListSerializer.java:73)
at com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serialize(IndexedListSerializer.java:19)
at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:575)
at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:666)
at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:156)
at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:575)
at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:666)
at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:156)
at com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serializeContents(IndexedListSerializer.java:113)
at com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serialize(IndexedListSerializer.java:73)
at com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serialize(IndexedListSerializer.java:19)
at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:575)
at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:666)
at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:156)
at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:575)
at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:666)
at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:156)
at com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serializeContents(IndexedListSerializer.java:113)
at com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serialize(IndexedListSerializer.java:73)
at com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serialize(IndexedListSerializer.java:19)
at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:575)
at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:666)
at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:156)
at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:575)
at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:666)
at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:156)
at com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serializeContents(IndexedListSerializer.java:113)
at com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serialize(IndexedListSerializer.java:73)
at com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serialize(IndexedListSerializer.java:19)
at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:575)
at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:666)
at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:156)
at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:575)
User.java
package per.czt.onlineshop.pojo;
import java.io.Serializable;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EntityListeners;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import com.fasterxml.jackson.annotation.JsonIgnore;
@Entity
@Table(name="mall_user")
@EntityListeners(AuditingEntityListener.class)
public class User implements Serializable {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="mall_user_id")
private Integer id;
@Column(name="mall_user_username")
private String username;
@Column(name="mall_user_nickname")
private String nickname;
@Column(name="mall_user_sex")
private String sex;
@Column(name="mall_user_userhead")
private String userhead;
@Column(name="mall_user_password")
private String password;
@Column(name="mall_user_phoneNum")
private String phoneNum;
@Column(name="mall_user_email")
private String email;
@OneToMany(mappedBy="user",cascade=CascadeType.PERSIST,fetch=FetchType.EAGER)
private Set<Order> orders=new HashSet<Order>();
@OneToMany(mappedBy="user",cascade=CascadeType.PERSIST,fetch=FetchType.EAGER)
private Set<ProductComment> productComments=new HashSet<ProductComment>();
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getUserhead() {
return userhead;
}
public void setUserhead(String userhead) {
this.userhead = userhead;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getPhoneNum() {
return phoneNum;
}
public void setPhoneNum(String phoneNum) {
this.phoneNum = phoneNum;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Set<Order> getOrders() {
return orders;
}
public void setOrders(Set<Order> orders) {
this.orders = orders;
}
@Override
public String toString() {
return "User [id=" + id + ", username=" + username + ", nickname=" + nickname + ", sex=" + sex + ", userhead="
+ userhead + ", password=" + password + ", phoneNum=" + phoneNum + ", email=" + email + "]";
}
public User() {
super();
// TODO Auto-generated constructor stub
}
public Set<ProductComment> getProductComments() {
return productComments;
}
public void setProductComments(Set<ProductComment> productComments) {
this.productComments = productComments;
}
}
login.vue
<template>
<div v-wechat-title="title">
<el-row type="flex" justify="center">
<el-form :model="user" :rules="rules" ref="loginForm">
<el-form-item label="邮箱" prop="email">
<el-input type="email" v-model="user.email" clearable></el-input>
</el-form-item>
<el-form-item label="密码" prop="password">
<el-input type="password" v-model="user.password" id="password" clearable show-password></el-input>
</el-form-item>
<el-button-group>
<el-button type="primary" v-on:click="submitForm('loginForm')" :round="false">{{message}}</el-button>
<el-button @click="goRegister">去注册<i class="el-icon-right" :round="false"></i></el-button>
</el-button-group>
</el-form>
</el-row>
</div>
</template>
<script>
import axios from 'axios'
export default {
name: 'loginForm',
data () {
return {
title: '用户登录',
user: {
email: '',
password: ''
/* userhead: '',
nickname: '',
sex: '',
phoneNum: '',
id: '' */
},
rules: {
email: [
{required: true, message: '请输入邮箱', trigger: 'blur'},
{min: 6, max: 20, message: '用户名长度在6-20个字符之间', trigger: 'blur'}
],
password: [
{required: true, message: '请输入密码', trigger: 'blur'},
{min: 6, max: 16, message: '密码长度在8-16个字符之间', trigger: 'blur'}
]
}
}
},
props: {
message: {
default: '登录'
}
},
methods: {
login () {
console.log('login')
axios({
url: 'http://127.0.0.1:8081/user/login',
method: 'get',
params: {
email: this.user.email,
password: this.user.password
}
}).then(response => {
console.log('response:' + response.data)
if (response.data != null && response.data !== '') {
console.log('登录成功')
this.$router.push('/index')
} else {
console.log('用户名或密码错误')
}
}).catch(error => {
console.log('error:' + error)
})
this.$emit('login')
},
goRegister () {
this.$router.push('/register')
},
submitForm (formName) {
this.$refs[formName].validate((valid) => {
if (valid) {
this.login()
} else {
console.log('error submit')
return false
}
})
}
}
}
</script>
<style scoped>
</style>
原因:对象之间互相包含,我这里使用了springdata,有关联的两个类都进行了配置,导致对象互相包含
解决方法:
加Ignore注解
@JsonIgnore
@OneToMany(mappedBy="user",cascade=CascadeType.PERSIST,fetch=FetchType.EAGER)
private Set<Order> orders=new HashSet<Order>();
@JsonIgnore
@OneToMany(mappedBy="user",cascade=CascadeType.PERSIST,fetch=FetchType.EAGER)
private Set<ProductComment> productComments=new HashSet<ProductComment>();
问题解决