admin管理员组文章数量:1315365
I don't understand this error I'm getting, it has bee very frustating... I'm trying to use DataTables to display the data from to tables with oneToMany relationship, the only way the data is displayed in the view is by setting to null the relationship, that way the error above disappears but then I don't know how to display the data as I need to. Thanks in advance.
In user:
@JoinColumn(name = "id_rol", referencedColumnName = "id_rol", foreignKey = @ForeignKey(name = "fk_di"))
@ManyToOne(optional = false)
private Rol rol;
@GetMapping("/users/pag")
@ResponseBody
public String usersPaginate(HttpServletRequest request, HttpServletResponse response) {
DataTableRequest<User> dataTableInRQ = new DataTableRequest<User>(request);
PaginationCriteria pagination = dataTableInRQ.getPaginationRequest();
String baseQuery = "SELECT id_user, username, name, lastname, password, id_rol, (SELECT COUNT(1) FROM user) AS total_records FROM user ORDER BY lastname ASC";
String paginatedQuery = AppUtil.buildPaginatedQuery(baseQuery, pagination);
Query query = entityManager.createNativeQuery(paginatedQuery, User.class);
@SuppressWarnings("unchecked")
List<User> usersList = query.getResultList();
/*
for (int i = 0; i<usersList.size(); i++){
usersList.get(i).setRol(null);
}*/
DataTableResults<User> dataTableResult = new DataTableResults<User>();
dataTableResult.setDraw(dataTableInRQ.getDraw());
dataTableResult.setListOfDataObjects(usersList);
if (!AppUtil.isObjectEmpty(usersList)) {
dataTableResult.setRecordsTotal(usersList.get(0).getTotalRecords().toString());
if (dataTableInRQ.getPaginationRequest().isFilterByEmpty()) {
dataTableResult.setRecordsFiltered(usersList.get(0).getTotalRecords().toString());
} else {
dataTableResult.setRecordsFiltered(Integer.toString(usersList.size()));
}
}
return new Gson().toJson(dataTableResult);
}
$(document)
.ready(
function() {
var table = $('#paginatedTable')
.DataTable(
{
initComplete : function() {
var input = $(
'.dataTables_filter input')
.unbind(), self = this
.api(), $searchButton = $(
'#search')
.click(
function() {
self
.search(
input
.val())
.draw();
})
},
"processing" : true,
"serverSide" : true,
"pageLength" : 10,
"lengthChange" : false,
"columnDefs" : [
{
targets : '_all',
orderable : false
},
{
targets : [ 0, 3, 4, 5, 6 ],
"className" : "text-center"
},
{
targets : [ 3, 4, 5, 6, 7 ],
searchable : false
},
{
targets : [ 6 ],
render : function(data,
type, row) {
return data == true ? 'Habilitado'
: 'Deshabilitado'
}
},
{
targets : [ 4 ],
render : function(data,
type, row) {
return moment(data)
.format(
"DD/MM/YYYY");
}
},
{
targets : [ 7 ],
data : "idUser",
render : function(data,
type, row, meta) {
return '<div class="btn-group"><a href="/users/ed/'
+ data
+ '"><img class="btnEdit" src="/images/edit.png"></a></div>';
}
} ],
"ajax" : {
"url" : "/users/pag",
"data" : function(data) {
}
},
"columns" : [ {
"data" : "username"
}, {
"data" : "lastname"
}, {
"data" : "name"
}, {
"data" : "rol.tipoRol",
render : function(data, type, row) {
return data || '';
}
}]
});
});
org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.StackOverflowError
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982) ~[spring-webmvc-4.3.10.RELEASE.jar:4.3.10.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901) ~[spring-webmvc-4.3.10.RELEASE.jar:4.3.10.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) [spring-webmvc-4.3.10.RELEASE.jar:4.3.10.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861) [spring-webmvc-4.3.10.RELEASE.jar:4.3.10.RELEASE]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:635) [tomcat-embed-core-8.5.16.jar:8.5.16]
2018-01-18 00:00:11.508 ERROR 9160 --- [nio-8091-exec-6] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Handler dispatch failed; nested exception is java.lang.StackOverflowError] with root cause
java.lang.StackOverflowError: null
at java.util.Calendar.get(Calendar.java:1826) ~[na:1.8.0_144]
at java.text.SimpleDateFormat.subFormat(SimpleDateFormat.java:1119) ~[na:1.8.0_144]
at java.text.SimpleDateFormat.format(SimpleDateFormat.java:966) ~[na:1.8.0_144]
at java.text.SimpleDateFormat.format(SimpleDateFormat.java:936) ~[na:1.8.0_144]
at java.text.DateFormat.format(DateFormat.java:345) ~[na:1.8.0_144]
I don't understand this error I'm getting, it has bee very frustating... I'm trying to use DataTables to display the data from to tables with oneToMany relationship, the only way the data is displayed in the view is by setting to null the relationship, that way the error above disappears but then I don't know how to display the data as I need to. Thanks in advance.
In user:
@JoinColumn(name = "id_rol", referencedColumnName = "id_rol", foreignKey = @ForeignKey(name = "fk_di"))
@ManyToOne(optional = false)
private Rol rol;
@GetMapping("/users/pag")
@ResponseBody
public String usersPaginate(HttpServletRequest request, HttpServletResponse response) {
DataTableRequest<User> dataTableInRQ = new DataTableRequest<User>(request);
PaginationCriteria pagination = dataTableInRQ.getPaginationRequest();
String baseQuery = "SELECT id_user, username, name, lastname, password, id_rol, (SELECT COUNT(1) FROM user) AS total_records FROM user ORDER BY lastname ASC";
String paginatedQuery = AppUtil.buildPaginatedQuery(baseQuery, pagination);
Query query = entityManager.createNativeQuery(paginatedQuery, User.class);
@SuppressWarnings("unchecked")
List<User> usersList = query.getResultList();
/*
for (int i = 0; i<usersList.size(); i++){
usersList.get(i).setRol(null);
}*/
DataTableResults<User> dataTableResult = new DataTableResults<User>();
dataTableResult.setDraw(dataTableInRQ.getDraw());
dataTableResult.setListOfDataObjects(usersList);
if (!AppUtil.isObjectEmpty(usersList)) {
dataTableResult.setRecordsTotal(usersList.get(0).getTotalRecords().toString());
if (dataTableInRQ.getPaginationRequest().isFilterByEmpty()) {
dataTableResult.setRecordsFiltered(usersList.get(0).getTotalRecords().toString());
} else {
dataTableResult.setRecordsFiltered(Integer.toString(usersList.size()));
}
}
return new Gson().toJson(dataTableResult);
}
$(document)
.ready(
function() {
var table = $('#paginatedTable')
.DataTable(
{
initComplete : function() {
var input = $(
'.dataTables_filter input')
.unbind(), self = this
.api(), $searchButton = $(
'#search')
.click(
function() {
self
.search(
input
.val())
.draw();
})
},
"processing" : true,
"serverSide" : true,
"pageLength" : 10,
"lengthChange" : false,
"columnDefs" : [
{
targets : '_all',
orderable : false
},
{
targets : [ 0, 3, 4, 5, 6 ],
"className" : "text-center"
},
{
targets : [ 3, 4, 5, 6, 7 ],
searchable : false
},
{
targets : [ 6 ],
render : function(data,
type, row) {
return data == true ? 'Habilitado'
: 'Deshabilitado'
}
},
{
targets : [ 4 ],
render : function(data,
type, row) {
return moment(data)
.format(
"DD/MM/YYYY");
}
},
{
targets : [ 7 ],
data : "idUser",
render : function(data,
type, row, meta) {
return '<div class="btn-group"><a href="/users/ed/'
+ data
+ '"><img class="btnEdit" src="/images/edit.png"></a></div>';
}
} ],
"ajax" : {
"url" : "/users/pag",
"data" : function(data) {
}
},
"columns" : [ {
"data" : "username"
}, {
"data" : "lastname"
}, {
"data" : "name"
}, {
"data" : "rol.tipoRol",
render : function(data, type, row) {
return data || '';
}
}]
});
});
org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.StackOverflowError
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982) ~[spring-webmvc-4.3.10.RELEASE.jar:4.3.10.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901) ~[spring-webmvc-4.3.10.RELEASE.jar:4.3.10.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) [spring-webmvc-4.3.10.RELEASE.jar:4.3.10.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861) [spring-webmvc-4.3.10.RELEASE.jar:4.3.10.RELEASE]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:635) [tomcat-embed-core-8.5.16.jar:8.5.16]
2018-01-18 00:00:11.508 ERROR 9160 --- [nio-8091-exec-6] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Handler dispatch failed; nested exception is java.lang.StackOverflowError] with root cause
java.lang.StackOverflowError: null
at java.util.Calendar.get(Calendar.java:1826) ~[na:1.8.0_144]
at java.text.SimpleDateFormat.subFormat(SimpleDateFormat.java:1119) ~[na:1.8.0_144]
at java.text.SimpleDateFormat.format(SimpleDateFormat.java:966) ~[na:1.8.0_144]
at java.text.SimpleDateFormat.format(SimpleDateFormat.java:936) ~[na:1.8.0_144]
at java.text.DateFormat.format(DateFormat.java:345) ~[na:1.8.0_144]
Share
Improve this question
edited Jan 18, 2018 at 6:49
Kmtasia
asked Jan 18, 2018 at 6:35
KmtasiaKmtasia
681 gold badge2 silver badges10 bronze badges
1
- Its a StackOverflowError You came to the right place my friend :-D – sparker Commented Jul 28, 2022 at 12:10
1 Answer
Reset to default 3If anyone is interested in the solution:
I added this class to my project GraphAdapterBuilder, and changed the last line of my controller for:
GsonBuilder gsonBuilder = new GsonBuilder(); new GraphAdapterBuilder().addType(User.class).registerOn(gsonBuilder); Gson gson = gsonBuilder.create(); return gson;
That way I get this Json in response, with all the needed information:
{"draw":"1","recordsFiltered":"3","recordsTotal":"3","data":[{"0x1":{"idUser":3,"username":"grtyg","name":"","lastname":"","totalRecords":3,"rol":{"idRol":2,"rol":"User ad"}}}}]}
I could had simply use the javax @Transient annotation in the Rol entity as below:
@Transient @OneToMany(cascade = CascadeType.ALL, mappedBy = "rol") private Set<User> users;
but later on I would need to use it.
本文标签:
版权声明:本文标题:javascript - org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.StackOv 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1741974448a2408037.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论