0

While working on a school project I came across this really weird error.

To give some context, we're converting a MySQL database to a SQLServer database using Java and Hibernate. It's a database for MLB stats and such.

The following code is in my Convert.java main file:

Team t
Integer yearId = rs.getInt("yearId");
...
Player p = HibernateUtil.retrievePlayerByNameAndDebutAndBirthCity(firstName + 
               " " + lastName, convertStringToDate(debut), birthCity);              
PlayerSeason plrsn = HibernateUtil.retirevePlayerSeasonByPlayerAndYear(p, yearId);
t.addPlayerSeason(plrsn);

retrievePlayerByNameAndDebutAndBirthCity properly returns a Player object.

        Player.java
@Entity(name = "player")
public class Player {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
Integer playerId;

@ElementCollection
@CollectionTable(name = "playerposition", joinColumns = @JoinColumn(name = "playerid"))
@Column(name = "position")
@Fetch(FetchMode.JOIN)
Set<String> positions = new HashSet<String>();

@OneToMany(fetch = FetchType.EAGER, cascade=CascadeType.ALL, mappedBy="id.player")
@Fetch(FetchMode.JOIN)
Set<PlayerSeason> seasons = new HashSet<PlayerSeason>();

@Column
String name;
@Column
String nickName;
@Column
Date birthDay;
@Column
Date deathDay;
@Column
String battingHand;
@Column
String throwingHand;
@Column
String birthCity;
@Column
String birthState;
@Column
String college;
@Column
Date firstGame;
@Column
Date lastGame;

However the retrievePlayerSeasonByPlayerAndYear method crashes the program.

Here's the method retrievePlayerSeasonByPlayerAndYear()

 public static PlayerSeason retrievePlayerSeasonByPlayerAndYear(Player p, Integer year){
    Session session = HibernateUtil.getSessionFactory().getCurrentSession();
    Transaction tx = session.getTransaction();
    try {
        tx.begin();
        org.hibernate.Query query; 
        query = session.createQuery("FROM bo.PlayerSeason ps where " + "ps.id.player.id = :pid " + " AND ps.id.year = :y");
        query.setParameter("pid", p.getId());   
        query.setParameter("y", year);
        PlayerSeason toReturn = null;
        if(query.list().size() > 0) //crashes when attempting to execute query.list().size()
            toReturn =  (PlayerSeason) query.list().get(0);
        tx.commit();
        return toReturn;
    } catch (Exception e) {
        tx.rollback();
        e.printStackTrace();
    }
    return null;
}

Any ideas?

-------EDIT-------

I am only limited to 30,000 characters. The complete stack trace is exactly what I posted above repeated numerous times.

-----EDIT--------

I posted the stack trace in the incorrect order; now it is correct. The above sequence repeats ... a lot of times.

-----EDIT----
Removed all previous information pertaining to the error message. Unchecked the "Limit console output" option and got the following as the stack trace:

Exception in thread "main" java.lang.StackOverflowError
at java.util.logging.Level.intValue(Unknown Source)
at java.util.logging.Logger.isLoggable(Unknown Source)
at com.microsoft.sqlserver.jdbc.TDSReader.reset(IOBuffer.java:4929)
at com.microsoft.sqlserver.jdbc.ServerDTVImpl.skipValue(dtv.java:2357)
at com.microsoft.sqlserver.jdbc.DTV.skipValue(dtv.java:104)
at com.microsoft.sqlserver.jdbc.Column.skipValue(Column.java:86)
at com.microsoft.sqlserver.jdbc.SQLServerResultSet.skipColumns(SQLServerResultSet.java:156)
at com.microsoft.sqlserver.jdbc.SQLServerResultSet.loadColumn(SQLServerResultSet.java:743)
at com.microsoft.sqlserver.jdbc.SQLServerResultSet.getterGetColumn(SQLServerResultSet.java:2062)
at com.microsoft.sqlserver.jdbc.SQLServerResultSet.getValue(SQLServerResultSet.java:2082)
at com.microsoft.sqlserver.jdbc.SQLServerResultSet.getValue(SQLServerResultSet.java:2067)
at com.microsoft.sqlserver.jdbc.SQLServerResultSet.getInt(SQLServerResultSet.java:2319)
at org.hibernate.type.descriptor.sql.IntegerTypeDescriptor$2.doExtract(IntegerTypeDescriptor.java:74)
at org.hibernate.type.descriptor.sql.BasicExtractor.extract(BasicExtractor.java:64)
at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:267)
at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:263)
at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:253)

the rest of the trace repeats the pattern below:

at org.hibernate.type.ManyToOneType.hydrate(ManyToOneType.java:190)
at org.hibernate.type.ComponentType.hydrate(ComponentType.java:637)
at org.hibernate.type.ComponentType.nullSafeGet(ComponentType.java:331)
at org.hibernate.type.ManyToOneType.hydrate(ManyToOneType.java:190)
at org.hibernate.type.ComponentType.hydrate(ComponentType.java:637)
at org.hibernate.loader.plan.exec.process.internal.EntityReferenceInitializerImpl.readIdentifierHydratedState(EntityReferenceInitializerImpl.java:117)
at org.hibernate.loader.plan.exec.process.internal.EntityReferenceInitializerImpl.hydrateIdentifier(EntityReferenceInitializerImpl.java:96)
at org.hibernate.loader.plan.exec.process.internal.AbstractRowReader.readRow(AbstractRowReader.java:89)
at org.hibernate.loader.plan.exec.internal.EntityLoadQueryDetails$EntityLoaderRowReader.readRow(EntityLoadQueryDetails.java:255)
at org.hibernate.loader.plan.exec.process.internal.ResultSetProcessorImpl.extractResults(ResultSetProcessorImpl.java:129)
at org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.executeLoad(AbstractLoadPlanBasedLoader.java:138)
at org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.executeLoad(AbstractLoadPlanBasedLoader.java:102)
at org.hibernate.loader.entity.plan.AbstractLoadPlanBasedEntityLoader.load(AbstractLoadPlanBasedEntityLoader.java:186)
at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:4126)
at org.hibernate.event.internal.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:502)
at org.hibernate.event.internal.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:467)
at org.hibernate.event.internal.DefaultLoadEventListener.load(DefaultLoadEventListener.java:212)
at org.hibernate.event.internal.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:274)
at org.hibernate.event.internal.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:150)
at org.hibernate.internal.SessionImpl.fireLoad(SessionImpl.java:1070)
at org.hibernate.internal.SessionImpl.internalLoad(SessionImpl.java:989)
at org.hibernate.type.EntityType.resolveIdentifier(EntityType.java:716)
at org.hibernate.type.EntityType.resolve(EntityType.java:502)
at org.hibernate.type.ComponentType.resolve(ComponentType.java:662)
at org.hibernate.type.ComponentType.nullSafeGet(ComponentType.java:331)
  • There must be an exception type and a message at the beginning of the stack trace, please include that in your question. – David Levesque Apr 29 '14 at 23:57
  • Eclipse isn't showing an Exception type. – Abraham Church Apr 30 '14 at 00:16
  • Maybe you're missing the first part of the stack trace because it's too long. Try increasing the capacity of the Eclipse console buffer: http://stackoverflow.com/questions/2828255/how-do-i-increase-the-capacity-of-the-eclipse-output-console – David Levesque Apr 30 '14 at 00:21

0 Answers0