I have created a web application to manage a veterinary clinic with Spring Roo and Gvnix tools.
I created the database with the tables veterinary , owners, pets, dating, all these tables relate to 1 to many , except the table treatments and medicines that relate many to many, these 2 tables above include an intermediate table , called _treatment_med_ which serves to interact between them , use database manager MySQL workbench and MYSQL Server , everything works perfect , from the web application forms I create, update and delete owners, pets, veterinarians, dating, medications but when I try to create more than 2 records on table treatments doing a multiple selection in drugs that have related to the table through treatments a tag jspx.
<field:select field="Med" id="c_com_clinicaveterinaria_dam_domain_Tratamiento_Med" itemValue="id" items="${medicamentoses}" multiple="true" path="/medicamentoses" z="+hr+pOBWxfr2whYp+joa+OMxAHk="/>
The application gives me an error without detail of because and I drop by full
I see process from the task manager of Windows with Java (TM) platform SE Binary name (java.exe) soars to more than +1,800 KB (private working space), which makes the web application fall.
Problem in this part of code in the AspectJ class for persistence of the Gvnix with the name.
privileged aspect TratamientoBatchService_Roo_GvNIXJpaBatch {
I think that the error is here.
@Transactional
public void TratamientoBatchService.create(List<Tratamiento> tratamientoes) {
for( Tratamiento tratamiento : tratamientoes) {
tratamiento.persist();
}
}
This is error showing me the IntelliJ IDE console:
Stacktrace:] with root cause java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Arrays.java:3332)
at java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:137)
at java.lang.AbstractStringBuilder.ensureCapacityInternal(AbstractStringBuilder.java:121)
at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:421)
at java.lang.StringBuffer.append(StringBuffer.java:272)
at org.apache.commons.lang3.builder.ToStringStyle.appendFieldSeparator(ToStringStyle.java:1503)
at org.apache.commons.lang3.builder.ToStringStyle.appendFieldEnd(ToStringStyle.java:1526)
at org.apache.commons.lang3.builder.ToStringStyle.append(ToStringStyle.java:439)
at org.apache.commons.lang3.builder.ToStringBuilder.append(ToStringBuilder.java:848)
at org.apache.commons.lang3.builder.ReflectionToStringBuilder.appendFieldsIn(ReflectionToStringBuilder.java:522)
at org.apache.commons.lang3.builder.ReflectionToStringBuilder.toString(ReflectionToStringBuilder.java:683)
at org.apache.commons.lang3.builder.ReflectionToStringBuilder.toString(ReflectionToStringBuilder.java:282)
at org.apache.commons.lang3.builder.ReflectionToStringBuilder.toString(ReflectionToStringBuilder.java:145)
at com.clinicaveterinaria.dam.domain.Citas_Roo_ToString.ajc$interMethod$com_clinicaveterinaria_dam_domain_Citas_Roo_ToString$com_clinicaveterinaria_dam_domain_Citas$toString(Citas_Roo_ToString.aj:13)
at com.clinicaveterinaria.dam.domain.Citas.toString(Citas.java:1)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuffer.append(StringBuffer.java:265)
at org.apache.commons.lang3.builder.ToStringStyle.appendDetail(ToStringStyle.java:586)
at org.apache.commons.lang3.builder.ToStringStyle.appendInternal(ToStringStyle.java:550)
at org.apache.commons.lang3.builder.ToStringStyle.append(ToStringStyle.java:436)
at org.apache.commons.lang3.builder.ToStringBuilder.append(ToStringBuilder.java:848)
at org.apache.commons.lang3.builder.ReflectionToStringBuilder.appendFieldsIn(ReflectionToStringBuilder.java:522)
at org.apache.commons.lang3.builder.ReflectionToStringBuilder.toString(ReflectionToStringBuilder.java:683)
at org.apache.commons.lang3.builder.ReflectionToStringBuilder.toString(ReflectionToStringBuilder.java:282)
at org.apache.commons.lang3.builder.ReflectionToStringBuilder.toString(ReflectionToStringBuilder.java:145)
at com.clinicaveterinaria.dam.domain.Tratamiento_Roo_ToString.ajc$interMethod$com_clinicaveterinaria_dam_domain_Tratamiento_Roo_ToString$com_clinicaveterinaria_dam_domain_Tratamiento$toString(Tratamiento_Roo_ToString.aj:13)
at com.clinicaveterinaria.dam.domain.Tratamiento.toString(Tratamiento.java:1)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at java.util.AbstractCollection.toString(AbstractCollection.java:462)
at org.hibernate.collection.internal.PersistentSet.toString(PersistentSet.java:317)
at java.lang.String.valueOf(String.java:2994)
I've tried to configure the Maven server from the IDE IntelliJ IDEA to increase the amount of memory that can withstand through "- Xmx512m - XX:MaxPermSize = 128 m" but the problem cannot be solved.
This is my class Java : Tratamiento.java
package com.clinicaveterinaria.dam.domain;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.roo.addon.javabean.RooJavaBean;
import org.springframework.roo.addon.jpa.activerecord.RooJpaActiveRecord;
import org.springframework.roo.addon.tostring.RooToString;
import javax.persistence.*;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
@RooJavaBean
@RooToString
@RooJpaActiveRecord
public class Tratamiento {
/**
*/
@NotNull
@Size(min = 5, max = 100)
private String Codigo;
/**
*/
@Size(min = 3, max = 250)
private String AnalisisClinicos;
/**
*/
@Size(min = 3, max = 250)
private String Medicamentos;
/**
*/
private double Coste;
/**
*/
@Size(min = 3, max = 250)
private String Diagnostico;
/**
*/
@Size(min = 3, max = 250)
private String MotivoIngreso;
/**
*/
@NotNull
@Temporal(TemporalType.TIMESTAMP)
@DateTimeFormat(style = "M-")
private Date FechaComienzoTratamiento;
/**
*/
@Temporal(TemporalType.TIMESTAMP)
@DateTimeFormat(style = "M-")
private Date FechaFinTratamiento;
/**
*/
@ManyToOne
private Citas citas;
/**
*/
@ManyToMany(cascade = CascadeType.ALL)
private Set<Medicamentos> Med = new HashSet<Medicamentos>();
public static List<Tratamiento> findTratamientoXDueño(int idUsr) {
if (idUsr <= 0 /*mas comprobaciones*/) return null;
Query query = entityManager().createNativeQuery(
" SELECT t.* FROM tratamiento t " +
" INNER JOIN citas c ON c.id = t.citas " +
" INNER JOIN mascota m ON m.id = c.mascotas " +
" WHERE m.duenio = (:idUsr)"
, Tratamiento.class).setParameter("idUsr", idUsr);
return query.getResultList();
}
public static List<Tratamiento> findTratamientoXVeterinario(int idUsr) {
if (idUsr <= 0 /*mas comprobaciones*/) return null;
Query query = entityManager().createNativeQuery(
" SELECT t.* FROM tratamiento t " +
" INNER JOIN citas c ON c.id = t.citas " +
" WHERE c.veterinarios = (:idUsr)"
, Tratamiento.class).setParameter("idUsr", idUsr);
return query.getResultList();
}
}
Thank you by the help , i am doing the final course project.
I am using MVC (Model–view–controller).
Sorry , my english is very bad.