Problem with Session.get
muhviehstarr Nov 28, 2005 4:45 PMHi,
I've got a really strange problem.
I've defined the following EntityBean:
package de.hotware.dataobjects.entities; import java.io.Serializable; import java.util.Collection; import javax.persistence.Basic; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratorType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.OneToMany; import javax.persistence.OneToOne; import javax.persistence.Table; import javax.persistence.AccessType; @Entity(access = AccessType.FIELD) @Table(name = "categories") public class Category implements Serializable { @Id(generate = GeneratorType.IDENTITY) @Column(name = "id") private int id; @Basic(optional = false) @Column(name = "foreignid", length = 10) private String networkId; @OneToOne(optional = false, fetch = FetchType.LAZY) @JoinColumn(name = "foreigner", nullable = false) private AffiliateNetwork network; @Basic(optional = false) @Column(name = "name", nullable = false) private String name; @OneToOne(fetch = FetchType.LAZY) @JoinColumn(name = "parent") private Category parent; @OneToMany(mappedBy = "parent") private Collection<Category> subcategories; @Override public boolean equals(Object obj) { if (!(obj instanceof Category)) return false; Category o = (Category) obj; return o.id == id; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public AffiliateNetwork getNetwork() { return network; } public void setNetwork(AffiliateNetwork network) { this.network = network; } public String getNetworkId() { return networkId; } public void setNetworkId(String networkId) { this.networkId = networkId; } public Category getParent() { return parent; } public void setParent(Category parent) { this.parent = parent; } public Collection<Category> getSubcategories() { return subcategories; } public void setSubcategories(Collection<Category> subcategories) { this.subcategories = subcategories; } }
And in the Sessionbean I want to search for an entity:
@Stateless @Remote( { TestBean.class }) public class TestBeanBean implements TestBean { @PersistenceContext(unitName = "hotwaredb") private Session em; public Category test() { return (Category) em.get(Category.class, 1); } }
The remote-client calls the test-method and the result is null. But the entity with id 1 exists in the database.
This is the Output of JBOSS:
22:28:48,307 DEBUG [DefaultLoadEventListener -- org.hibernate.event.def.DefaultLoadEventListener] loading entity: [dataobjects.entities.Category#1] 22:28:48,307 DEBUG [DefaultLoadEventListener -- org.hibernate.event.def.DefaultLoadEventListener] attempting to resolve: [dataobjects.entities.Category#1] 22:28:48,308 DEBUG [DefaultLoadEventListener -- org.hibernate.event.def.DefaultLoadEventListener] object not resolved in any cache: [dataobjects.entities.Category#1] 22:28:48,308 DEBUG [AbstractEntityPersister -- org.hibernate.persister.entity.AbstractEntityPersister] Fetching entity: [dataobjects.entities.Category#1] 22:28:48,309 DEBUG [Loader -- org.hibernate.loader.Loader] loading entity: [dataobjects.entities.Category#1] 22:28:48,309 DEBUG [AbstractBatcher -- org.hibernate.jdbc.AbstractBatcher] about to open PreparedStatement (open PreparedStatements: 0, globally: 0) 22:28:48,311 DEBUG [ConnectionManager -- org.hibernate.jdbc.ConnectionManager] opening JDBC connection 22:28:48,312 DEBUG [SQL -- org.hibernate.jdbc.AbstractBatcher] select category0_.id as id74_0_, category0_.foreignid as foreignid74_0_, category0_.foreigner as foreigner74_0_, category0_.name as name74_0_, category0_.parent as parent74_0_ from categories category0_ where category0_.id=? 22:28:48,313 INFO [STDOUT -- org.jboss.logging.util.LoggerStream] Hibernate: select category0_.id as id74_0_, category0_.foreignid as foreignid74_0_, category0_.foreigner as foreigner74_0_, category0_.name as name74_0_, category0_.parent as parent74_0_ from categories category0_ where category0_.id=? 22:28:48,313 DEBUG [AbstractBatcher -- org.hibernate.jdbc.AbstractBatcher] preparing statement 22:28:48,315 DEBUG [IntegerType -- org.hibernate.type.NullableType] binding '1' to parameter: 1 22:28:48,317 DEBUG [AbstractBatcher -- org.hibernate.jdbc.AbstractBatcher] about to open ResultSet (open ResultSets: 0, globally: 0) 22:28:48,318 DEBUG [Loader -- org.hibernate.loader.Loader] processing result set 22:28:48,319 DEBUG [Loader -- org.hibernate.loader.Loader] done processing result set (0 rows) 22:28:48,319 DEBUG [AbstractBatcher -- org.hibernate.jdbc.AbstractBatcher] about to close ResultSet (open ResultSets: 1, globally: 1) 22:28:48,320 DEBUG [AbstractBatcher -- org.hibernate.jdbc.AbstractBatcher] about to close PreparedStatement (open PreparedStatements: 1, globally: 1) 22:28:48,321 DEBUG [AbstractBatcher -- org.hibernate.jdbc.AbstractBatcher] closing statement 22:28:48,322 DEBUG [ConnectionManager -- org.hibernate.jdbc.ConnectionManager] aggressively releasing JDBC connection 22:28:48,323 DEBUG [ConnectionManager -- org.hibernate.jdbc.ConnectionManager] closing JDBC connection [ (open PreparedStatements: 0, globally: 0) (open ResultSets: 0, globally: 0)] 22:28:48,323 DEBUG [Loader -- org.hibernate.loader.Loader] total objects hydrated: 0 22:28:48,324 DEBUG [StatefulPersistenceContext -- org.hibernate.engine.StatefulPersistenceContext] initializing non-lazy collections 22:28:48,324 DEBUG [Loader -- org.hibernate.loader.Loader] done entity load 22:28:48,325 DEBUG [CacheSynchronization -- org.hibernate.transaction.CacheSynchronization] transaction before completion callback 22:28:48,326 DEBUG [JDBCContext -- org.hibernate.jdbc.JDBCContext] before transaction completion 22:28:48,327 DEBUG [SessionImpl -- org.hibernate.impl.SessionImpl] before transaction completion 22:28:48,328 DEBUG [SessionImpl -- org.hibernate.impl.SessionImpl] closing session 22:28:48,332 DEBUG [ConnectionManager -- org.hibernate.jdbc.ConnectionManager] connection already null in cleanup : no action 22:28:48,333 DEBUG [CacheSynchronization -- org.hibernate.transaction.CacheSynchronization] transaction after completion callback, status: 3 22:28:48,333 DEBUG [JDBCContext -- org.hibernate.jdbc.JDBCContext] after transaction completion 22:28:48,334 DEBUG [SessionImpl -- org.hibernate.impl.SessionImpl] after transaction completion
But the following sql-statement running directly on the server returns exactly one row:
select category0_.id as id74_0_, category0_.foreignid as foreignid74_0_, category0_.foreigner as foreigner74_0_, category0_.name as name74_0_, category0_.parent as parent74_0_ from categories category0_ where category0_.id=1
Any ideas?
Thank you for your help!
Bye Frank