Java 奇怪的休眠问题

Java 奇怪的休眠问题,java,mysql,sql-server,hibernate,Java,Mysql,Sql Server,Hibernate,在学校的一个项目中,我遇到了一个非常奇怪的错误 为了提供一些上下文,我们使用Java和Hibernate将MySQL数据库转换为SQLServer数据库。这是一个MLB统计数据之类的数据库 以下代码位于我的Convert.java主文件中: Team t Integer yearId = rs.getInt("yearId"); ... Player p = HibernateUtil.retrievePlayerByNameAndDebutAndBirthCity(firstName +

在学校的一个项目中,我遇到了一个非常奇怪的错误

为了提供一些上下文,我们使用Java和Hibernate将MySQL数据库转换为SQLServer数据库。这是一个MLB统计数据之类的数据库

以下代码位于我的Convert.java主文件中:

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);
RetrievePlayerBynameandDebundBirthCity正确返回一个玩家对象

        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;
有什么想法吗

-------编辑-------

我只限于30000个字符。完整的堆栈跟踪正是我在上面多次重复发布的内容

-----编辑--------

我以错误的顺序发布堆栈跟踪;现在它是正确的。上面的序列重复。。。很多次

-----编辑--
已删除与错误消息有关的所有以前的信息。取消选中“限制控制台输出”选项,并将以下内容作为堆栈跟踪:

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)
跟踪的其余部分重复以下模式:

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)

堆栈跟踪的开头必须有异常类型和消息,请将其包含在问题中。Eclipse没有显示异常类型。可能是因为堆栈跟踪的第一部分太长而丢失了。尝试增加Eclipse控制台缓冲区的容量:
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)