2016-03-01 69 views
2

我有一個主要和次要的類用於存儲錯誤時保存。 錯誤可以是各種類型,主鍵是錯誤的主要類別和類型。 這是我班的映射:StackOverflowError與@EmbeddedId

我的主要類:

@Entity 
@Table(name = "foo") 
public class FooEntity implements Serializable { 

    private static final long serialVersionUID = 1L; 

    @Id 
    @GeneratedValue 
    @Column(name = "id")  
    private Integer id; 

    @Column(name = "param1") 
    private String param1; 

    @OneToMany(fetch = FetchType.LAZY, mappedBy = "id.foo", cascade = CascadeType.ALL) 
    List<FooErrorEntity> errors; 
    //getters&setters 
} 

我的錯誤類:

@Entity 
@Table(name = "fooerror") 
public class FooErrorEntity implements Serializable { 

    private static final long serialVersionUID = 1L; 

    @EmbeddedId 
    private FooErrorId id; 

    @Column(name = "descripcion") 
    private String description; 

    //Getters&& setters 
} 

我的錯誤ID級別:

@Embeddable 
public class FooErrorId implements Serializable { 

    private static final long serialVersionUID = 1L; 

    @ManyToOne(fetch = FetchType.EAGER) 
    @JoinColumn(name = "foo_id", nullable = false)  
    private FooEntity foo; 

    @Enumerated(EnumType.STRING) 
    @Column(name = "type") 
    private ErrorType type; 

    //getters&setters 
} 

在我的控制器我會檢查錯誤並將其添加到列表中:

@RequestMapping(方法= RequestMethod.POST) 公開的最終字符串saveFoo(@ModelAttribute( 「富」)FooEnntity富){

//My checks... and add the errors 

FooErrorEntity error1 = new FooErrorEntity(); 
error1.setDescription("Desc1"); 
FooErrorId errorId1 = new FooErrorId(); 
errorId1.setFoo(foo); 
errorId1.setType(ErrorType.ERROR3); 
error1.setId(errorId1); 

foo.getErrors().add(error1); 

fooService.save(foo); 

return "view"; 

}

如果我編輯有錯誤的FooEntity我有這樣的錯誤:

Hibernate: select errors0_.foo_id as foo_id3_2_0_, errors0_.type as type1_2_0_, errors0_.foo_id as foo_id3_2_1_, errors0_.type as type1_2_1_, errors0_.descripcion as descripc2_2_1_ from fooerror errors0_ where errors0_.foo_id=? Hibernate: select fooentity0_.id as id1_1_1_, fooentity0_.param1 as param2_1_1_, errors1_.foo_id as foo_id3_2_3_, errors1_.type as type1_2_3_, errors1_.foo_id as foo_id3_2_0_, errors1_.type as type1_2_0_, errors1_.descripcion as descripc2_2_0_ from foo fooentity0_ left outer join fooerror errors1_ on fooentity0_.id=errors1_.foo_id where fooentity0_.id=? .... Hibernate: select fooentity0_.id as id1_1_1_, fooentity0_.param1 as param2_1_1_, errors1_.foo_id as foo_id3_2_3_, errors1_.type as type1_2_3_, errors1_.foo_id as foo_id3_2_0_, errors1_.type as type1_2_0_, errors1_.descripcion as descripc2_2_0_ from foo fooentity0_ left outer join fooerror errors1_ on fooentity0_.id=errors1_.foo_id where fooentity0_.id=? Hibernate: select fooentity0_.id as id1_1_1_, fooentity0_.param1 as param2_1_1_, errors1_.foo_id as foo_id3_2_3_, errors1_.type as type1_2_3_, errors1_.foo_id as foo_id3_2_0_, errors1_.type as type1_2_0_, errors1_.descripcion as descripc2_2_0_ from foo fooentity0_ left outer join fooerror errors1_ on fooentity0_.id=errors1_.foo_id where fooentity0_.id=? Hibernate: select fooentity0_.id as id1_1_1_, fooentity0_.param1 as param2_1_1_, errors1_.foo_id as foo_id3_2_3_, errors1_.type as type1_2_3_, errors1_.foo_id as foo_id3_2_0_, errors1_.type as type1_2_0_, errors1_.descripcion as descripc2_2_0_ from foo fooentity0_ left outer join fooerror errors1_ on fooentity0_.id=errors1_.foo_id where fooentity0_.id=? mar 01, 2016 9:15:57 PM org.apache.catalina.core.StandardWrapperValve invoke GRAVE: El Servlet.service() para el servlet [dispatcher] en el contexto con ruta [/springMVC] lanzó la excepción [Handler processing failed; nested exception is java.lang.StackOverflowError] con causa raíz java.lang.StackOverflowError at com.mysql.jdbc.Util.handleNewInstance(Util.java:428)  at com.mysql.jdbc.PreparedStatement.getInstance(PreparedStatement.java:834)  at com.mysql.jdbc.ConnectionImpl.clientPrepareStatement(ConnectionImpl.java:1573) at com.mysql.jdbc.ConnectionImpl.prepareStatement(ConnectionImpl.java:4591)  at com.mysql.jdbc.ConnectionImpl.prepareStatement(ConnectionImpl.java:4489) 

    at org.apache.commons.dbcp.DelegatingConnection.prepareStatement(DelegatingConnection.java:281)  at org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.prepareStatement(PoolingDataSource.java:313) at org.hibernate.engine.jdbc.internal.StatementPreparerImpl$5.doPrepare(StatementPreparerImpl.java:146)  at org.hibernate.engine.jdbc.internal.StatementPreparerImpl$StatementPreparationTemplate.prepareStatement(StatementPreparerImpl.java:172) at org.hibernate.engine.jdbc.internal.StatementPreparerImpl.prepareQueryStatement(StatementPreparerImpl.java:148) at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1928) at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1897) at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1875) at org.hibernate.loader.Loader.doQuery(Loader.java:919)  at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:336) at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:306) at org.hibernate.loader.Loader.loadEntity(Loader.java:2198)  at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:60) at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:50) at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:3956) at org.hibernate.event.internal.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:508) at org.hibernate.event.internal.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:478) at org.hibernate.event.internal.DefaultLoadEventListener.load(DefaultLoadEventListener.java:219) at org.hibernate.event.internal.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:278)  at org.hibernate.event.internal.DefaultLoadEventListener.doOnLoad(DefaultLoadEventListener.java:121) at org.hibernate.event.internal.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:89) at org.hibernate.internal.SessionImpl.fireLoad(SessionImpl.java:1129) at org.hibernate.internal.SessionImpl.internalLoad(SessionImpl.java:1022) at org.hibernate.type.EntityType.resolveIdentifier(EntityType.java:632)  at org.hibernate.type.EntityType.resolve(EntityType.java:424) at org.hibernate.type.ComponentType.resolve(ComponentType.java:687)  at org.hibernate.loader.Loader.extractKeysFromResultSet(Loader.java:848) at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:714)  at org.hibernate.loader.Loader.processResultSet(Loader.java:972) at org.hibernate.loader.Loader.doQuery(Loader.java:930)  at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:336) at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:306) at org.hibernate.loader.Loader.loadEntity(Loader.java:2198)  at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:60) at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:50) at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:3956) at org.hibernate.event.internal.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:508) at org.hibernate.event.internal.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:478) at org.hibernate.event.internal.DefaultLoadEventListener.load(DefaultLoadEventListener.java:219) at org.hibernate.event.internal.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:278)  at org.hibernate.event.internal.DefaultLoadEventListener.doOnLoad(DefaultLoadEventListener.java:121) at org.hibernate.event.internal.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:89) at org.hibernate.internal.SessionImpl.fireLoad(SessionImpl.java:1129) 


    at org.hibernate.internal.SessionImpl.internalLoad(SessionImpl.java:1022) at org.hibernate.type.EntityType.resolveIdentifier(EntityType.java:632)  at org.hibernate.type.EntityType.resolve(EntityType.java:424) at org.hibernate.type.ComponentType.resolve(ComponentType.java:687)  at org.hibernate.loader.Loader.extractKeysFromResultSet(Loader.java:848) at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:714)  at org.hibernate.loader.Loader.processResultSet(Loader.java:972) at org.hibernate.loader.Loader.doQuery(Loader.java:930)  at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:336) at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:306) at org.hibernate.loader.Loader.loadEntity(Loader.java:2198)  at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:60) at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:50) at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:3956) at org.hibernate.event.internal.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:508) at org.hibernate.event.internal.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:478) at org.hibernate.event.internal.DefaultLoadEventListener.load(DefaultLoadEventListener.java:219) at org.hibernate.event.internal.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:278)  at org.hibernate.event.internal.DefaultLoadEventListener.doOnLoad(DefaultLoadEventListener.java:121) at org.hibernate.event.internal.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:89) at org.hibernate.internal.SessionImpl.fireLoad(SessionImpl.java:1129) at org.hibernate.internal.SessionImpl.internalLoad(SessionImpl.java:1022) at org.hibernate.type.EntityType.resolveIdentifier(EntityType.java:632)  at org.hibernate.type.EntityType.resolve(EntityType.java:424) at org.hibernate.type.ComponentType.resolve(ComponentType.java:687)  at org.hibernate.loader.Loader.extractKeysFromResultSet(Loader.java:848) at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:714)  at org.hibernate.loader.Loader.processResultSet(Loader.java:972) at org.hibernate.loader.Loader.doQuery(Loader.java:930)  at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:336) at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:306) at org.hibernate.loader.Loader.loadEntity(Loader.java:2198)  at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:60) at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:50) at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:3956) at org.hibernate.event.internal.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:508) at org.hibernate.event.internal.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:478) at org.hibernate.event.internal.DefaultLoadEventListener.load(DefaultLoadEventListener.java:219) at org.hibernate.event.internal.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:278)  at org.hibernate.event.internal.DefaultLoadEventListener.doOnLoad(DefaultLoadEventListener.java:121) at org.hibernate.event.internal.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:89) at org.hibernate.internal.SessionImpl.fireLoad(SessionImpl.java:1129) 

    at org.hibernate.internal.SessionImpl.internalLoad(SessionImpl.java:1022) at org.hibernate.type.EntityType.resolveIdentifier(EntityType.java:632)  at org.hibernate.type.EntityType.resolve(EntityType.java:424) at org.hibernate.type.ComponentType.resolve(ComponentType.java:687)  at org.hibernate.loader.Loader.extractKeysFromResultSet(Loader.java:848) at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:714)  at org.hibernate.loader.Loader.processResultSet(Loader.java:972) at org.hibernate.loader.Loader.doQuery(Loader.java:930)  at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:336) at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:306) at org.hibernate.loader.Loader.loadEntity(Loader.java:2198)  at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:60) at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:50) at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:3956) at org.hibernate.event.internal.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:508) at org.hibernate.event.internal.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:478) at org.hibernate.event.internal.DefaultLoadEventListener.load(DefaultLoadEventListener.java:219) at org.hibernate.event.internal.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:278)  at org.hibernate.event.internal.DefaultLoadEventListener.doOnLoad(DefaultLoadEventListener.java:121) at org.hibernate.event.internal.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:89) at org.hibernate.internal.SessionImpl.fireLoad(SessionImpl.java:1129) at org.hibernate.internal.SessionImpl.internalLoad(SessionImpl.java:1022) at org.hibernate.type.EntityType.resolveIdentifier(EntityType.java:632)  at org.hibernate.type.EntityType.resolve(EntityType.java:424) at org.hibernate.type.ComponentType.resolve(ComponentType.java:687)  at org.hibernate.loader.Loader.extractKeysFromResultSet(Loader.java:848) at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:714)  at org.hibernate.loader.Loader.processResultSet(Loader.java:972) at org.hibernate.loader.Loader.doQuery(Loader.java:930)  at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:336) at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:306) at org.hibernate.loader.Loader.loadEntity(Loader.java:2198)  at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:60) at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:50) at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:3956) at org.hibernate.event.internal.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:508) at org.hibernate.event.internal.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:478) at org.hibernate.event.internal.DefaultLoadEventListener.load(DefaultLoadEventListener.java:219) at org.hibernate.event.internal.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:278)  at org.hibernate.event.internal.DefaultLoadEventListener.doOnLoad(DefaultLoadEventListener.java:121) at org.hibernate.event.internal.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:89) at org.hibernate.internal.SessionImpl.fireLoad(SessionImpl.java:1129) at org.hibernate.internal.SessionImpl.internalLoad(SessionImpl.java:1022) at org.hibernate.type.EntityType.resolveIdentifier(EntityType.java:632)  at org.hibernate.type.EntityType.resolve(EntityType.java:424) at org.hibernate.type.ComponentType.resolve(ComponentType.java:687)  at org.hibernate.loader.Loader.extractKeysFromResultSet(Loader.java:848) at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:714)  at org.hibernate.loader.Loader.processResultSet(Loader.java:972) at org.hibernate.loader.Loader.doQuery(Loader.java:930)  at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:336) at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:306) at org.hibernate.loader.Loader.loadEntity(Loader.java:2198)  at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:60) at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:50) at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:3956) at org.hibernate.event.internal.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:508) at org.hibernate.event.internal.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:478) at org.hibernate.event.internal.DefaultLoadEventListener.load(DefaultLoadEventListener.java:219) at org.hibernate.event.internal.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:278)  at org.hibernate.event.internal.DefaultLoadEventListener.doOnLoad(DefaultLoadEventListener.java:121) at org.hibernate.event.internal.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:89) at org.hibernate.internal.SessionImpl.fireLoad(SessionImpl.java:1129) at org.hibernate.internal.SessionImpl.internalLoad(SessionImpl.java:1022) at org.hibernate.type.EntityType.resolveIdentifier(EntityType.java:632)  at org.hibernate.type.EntityType.resolve(EntityType.java:424) at org.hibernate.type.ComponentType.resolve(ComponentType.java:687)  at org.hibernate.loader.Loader.extractKeysFromResultSet(Loader.java:848) at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:714)  at org.hibernate.loader.Loader.processResultSet(Loader.java:972) at org.hibernate.loader.Loader.doQuery(Loader.java:930)  at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:336) at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:306) at org.hibernate.loader.Loader.loadEntity(Loader.java:2198)  at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:60) at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:50) at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:3956) at org.hibernate.event.internal.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:508) at org.hibernate.event.internal.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:478) at org.hibernate.event.internal.DefaultLoadEventListener.load(DefaultLoadEventListener.java:219) at org.hibernate.event.internal.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:278)  at org.hibernate.event.internal.DefaultLoadEventListener.doOnLoad(DefaultLoadEventListener.java:121) at 
> org.hibernate.event.internal.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:89) 

    at org.hibernate.internal.SessionImpl.fireLoad(SessionImpl.java:1129) at org.hibernate.internal.SessionImpl.internalLoad(SessionImpl.java:1022) at org.hibernate.type.EntityType.resolveIdentifier(EntityType.java:632)  at org.hibernate.type.EntityType.resolve(EntityType.java:424) at org.hibernate.type.ComponentType.resolve(ComponentType.java:687)  at org.hibernate.loader.Loader.extractKeysFromResultSet(Loader.java:848) at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:714)  at org.hibernate.loader.Loader.processResultSet(Loader.java:972) at org.hibernate.loader.Loader.doQuery(Loader.java:930)  at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:336) at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:306) at org.hibernate.loader.Loader.loadEntity(Loader.java:2198)  at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:60) at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:50) at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:3956) at org.hibernate.event.internal.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:508) at org.hibernate.event.internal.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:478) at org.hibernate.event.internal.DefaultLoadEventListener.load(DefaultLoadEventListener.java:219) at org.hibernate.event.internal.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:278)  at org.hibernate.event.internal.DefaultLoadEventListener.doOnLoad(DefaultLoadEventListener.java:121) at org.hibernate.event.internal.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:89) at org.hibernate.internal.SessionImpl.fireLoad(SessionImpl.java:1129) at org.hibernate.internal.SessionImpl.internalLoad(SessionImpl.java:1022) at org.hibernate.type.EntityType.resolveIdentifier(EntityType.java:632)  at org.hibernate.type.EntityType.resolve(EntityType.java:424) at org.hibernate.type.ComponentType.resolve(ComponentType.java:687)  at org.hibernate.loader.Loader.extractKeysFromResultSet(Loader.java:848) at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:714)  at org.hibernate.loader.Loader.processResultSet(Loader.java:972) at org.hibernate.loader.Loader.doQuery(Loader.java:930)  at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:336) at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:306) at org.hibernate.loader.Loader.loadEntity(Loader.java:2198)  at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:60) at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:50) at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:3956) at org.hibernate.event.internal.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:508) at org.hibernate.event.internal.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:478) at org.hibernate.event.internal.DefaultLoadEventListener.load(DefaultLoadEventListener.java:219) at org.hibernate.event.internal.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:278)  at org.hibernate.event.internal.DefaultLoadEventListener.doOnLoad(DefaultLoadEventListener.java:121) at org.hibernate.event.internal.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:89) at org.hibernate.internal.SessionImpl.fireLoad(SessionImpl.java:1129) at org.hibernate.internal.SessionImpl.internalLoad(SessionImpl.java:1022) at org.hibernate.type.EntityType.resolveIdentifier(EntityType.java:632)  at org.hibernate.type.EntityType.resolve(EntityType.java:424) at org.hibernate.type.ComponentType.resolve(ComponentType.java:687)  at org.hibernate.loader.Loader.extractKeysFromResultSet(Loader.java:848) at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:714)  at org.hibernate.loader.Loader.processResultSet(Loader.java:972) at org.hibernate.loader.Loader.doQuery(Loader.java:930)  at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:336) at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:306) at org.hibernate.loader.Loader.loadEntity(Loader.java:2198)  at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:60) at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:50) at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:3956) at org.hibernate.event.internal.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:508) at org.hibernate.event.internal.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:478) at org.hibernate.event.internal.DefaultLoadEventListener.load(DefaultLoadEventListener.java:219) at org.hibernate.event.internal.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:278)  at org.hibernate.event.internal.DefaultLoadEventListener.doOnLoad(DefaultLoadEventListener.java:121) at org.hibernate.event.internal.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:89) at org.hibernate.internal.SessionImpl.fireLoad(SessionImpl.java:1129) at org.hibernate.internal.SessionImpl.internalLoad(SessionImpl.java:1022) at org.hibernate.type.EntityType.resolveIdentifier(EntityType.java:632)  at org.hibernate.type.EntityType.resolve(EntityType.java:424) at org.hibernate.type.ComponentType.resolve(ComponentType.java:687)  at org.hibernate.loader.Loader.extractKeysFromResultSet(Loader.java:848) at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:714)  at org.hibernate.loader.Loader.processResultSet(Loader.java:972) at org.hibernate.loader.Loader.doQuery(Loader.java:930)  at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:336) at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:306) at org.hibernate.loader.Loader.loadEntity(Loader.java:2198)  at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:60) at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:50) at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:3956) at org.hibernate.event.internal.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:508) at org.hibernate.event.internal.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:478) at org.hibernate.event.internal.DefaultLoadEventListener.load(DefaultLoadEventListener.java:219) at org.hibernate.event.internal.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:278)  at org.hibernate.event.internal.DefaultLoadEventListener.doOnLoad(DefaultLoadEventListener.java:121) at 
> org.hibernate.event.internal.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:89) 

    at org.hibernate.internal.SessionImpl.fireLoad(SessionImpl.java:1129) at org.hibernate.internal.SessionImpl.internalLoad(SessionImpl.java:1022) at org.hibernate.type.EntityType.resolveIdentifier(EntityType.java:632)  at org.hibernate.type.EntityType.resolve(EntityType.java:424) at org.hibernate.type.ComponentType.resolve(ComponentType.java:687)  at org.hibernate.loader.Loader.extractKeysFromResultSet(Loader.java:848) at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:714)  at org.hibernate.loader.Loader.processResultSet(Loader.java:972) at org.hibernate.loader.Loader.doQuery(Loader.java:930)  at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:336) at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:306) at org.hibernate.loader.Loader.loadEntity(Loader.java:2198)  at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:60) at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:50) at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:3956) at org.hibernate.event.internal.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:508) at org.hibernate.event.internal.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:478) at org.hibernate.event.internal.DefaultLoadEventListener.load(DefaultLoadEventListener.java:219) at org.hibernate.event.internal.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:278)  at org.hibernate.event.internal.DefaultLoadEventListener.doOnLoad(DefaultLoadEventListener.java:121) at org.hibernate.event.internal.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:89) at org.hibernate.internal.SessionImpl.fireLoad(SessionImpl.java:1129) at org.hibernate.internal.SessionImpl.internalLoad(SessionImpl.java:1022) at org.hibernate.type.EntityType.resolveIdentifier(EntityType.java:632)  at org.hibernate.type.EntityType.resolve(EntityType.java:424) at org.hibernate.type.ComponentType.resolve(ComponentType.java:687)  at org.hibernate.loader.Loader.extractKeysFromResultSet(Loader.java:848) at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:714)  at org.hibernate.loader.Loader.processResultSet(Loader.java:972) at org.hibernate.loader.Loader.doQuery(Loader.java:930)  at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:336) at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:306) at org.hibernate.loader.Loader.loadEntity(Loader.java:2198)  at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:60) 

和日誌繼續...我得到無限的選擇foo表

+0

太好了,您已經記錄了一萬個​​錯誤,現在我們很樂意爲您提供所有這些幫助。但是,自從我們閱讀以後,你應該等待一萬天...... –

回答

3

你有一個派生身份。

FooEntity.errors應該是 「上映射」 foo

public class FooEntity implements Serializable { 
    ... 
    @OneToMany(fetch = FetchType.LAZY, mappedBy = "foo", cascade = CascadeType.ALL) 
    List<FooErrorEntity> errors; 
    ... 
} 

FooErrorEntity的關係foo應移出@EmbeddedId,進入@Entity本身,它應該指定一個@MapsId

@Entity 
@Table(name = "fooerror") 
public class FooErrorEntity implements Serializable { 

    private static final long serialVersionUID = 1L; 

    @EmbeddedId 
    private FooErrorId id; 

    @ManyToOne(fetch = FetchType.EAGER) 
    @JoinColumn(name = "foo_id", nullable = false)  
    @MapsId("fooId") // maps fooId attribute of the embedded id 
    private FooEntity foo; 

    @Column(name = "descripcion") 
    private String description; 

    ... 
} 

FooErrorIdfoo應替換爲fooId其類型相關sponds到FooEntity的主鍵的類型:

@Embeddable 
public class FooErrorId implements Serializable { 

    private static final long serialVersionUID = 1L; 

    private Integer fooId; // type corresponds to FooEntity's id 

    @Enumerated(EnumType.STRING) 
    @Column(name = "type") 
    private ErrorType type; 

    ... 
} 

派生身份在JPA 2.1規範討論的,第2.4.1節。

+1

這是SOLUTION!,很棒!謝謝。 – oscar

+0

確實。對於JPA的最新版本,這起作用就像一個魅力。謝謝! –

-1

對我來說看起來像一個無限循環 - FooEntity有一個FooErrorEntity列表,它有一個FooErrorId,它有一個FooEntry。這已經是一個循環依賴。

+0

我明白這一點。但是因爲它發生在這種情況下?我有其他雙向@OneToMany關係,我沒有這個錯誤。 如果foo實體和錯誤類型是唯一的組合鍵,我如何映射錯誤實體? – oscar