[Persistence, JBoss/CMP, Hibernate, Database] - JPA persistence primary key loose
by stephan.opitz
i make a customer object persistent
// create a new customer
customer = new Customers();
// fill with data
customer.setEmail(email);
customer.setPassword(password);
// make persistent
customersFacade.save(customer);
after persists i know the new id is in db 11, but if i log its 0
why it won*t set automattically
log.info("customer ID: " + customer.getCustomersId());
entity has this:
@Entity
@Table(name = "customers")
public class Customers implements Serializable {
// ------------------------------------------------------ Manifest Constants
private static final long serialVersionUID = 5L;
// ------------------------------------------------------- Public Properties
private long customersId;
private String firstName;
private String lastName;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "customers_id")
public long getCustomersId() {
return customersId;
}
...
should work or how it works?
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3972714#3972714
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3972714
19 years, 7 months
[EJB 3.0] - EJb 3.0 primary key loose ?
by stephan.opitz
i make a customer object persistent
// create a new customer
customer = new Customers();
// fill with data
customer.setEmail(email);
customer.setPassword(password);
// make persistent
customersFacade.save(customer);
after persists i know the new id is in db 11, but if i log its 0
why it won*t set automattically
log.info("customer ID: " + customer.getCustomersId());
entity has this:
@Entity
@Table(name = "customers")
public class Customers implements Serializable {
// ------------------------------------------------------ Manifest Constants
private static final long serialVersionUID = 5L;
// ------------------------------------------------------- Public Properties
private long customersId;
private String firstName;
private String lastName;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "customers_id")
public long getCustomersId() {
return customersId;
}
...
should work or how it works?
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3972713#3972713
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3972713
19 years, 7 months
[EJB/JBoss] - JBoss is not beginning transaction
by holmes.j
Hi,
I'm using JBoss 4.0.4-GA with Hibernate 3.2CR4 and EJB 2.1. Hibernate is complaining that "load is not valid without active transaction" This comes form the TransactionManager that is checking to see if the Transaction is active. The transaction exists, it just has not begun.
I have a stateless session bean using CMT that looks like this ...
| /**
| * @ejb.bean name="GeoFeatureServer"
| * jndi-name="com.free2be.framework.gis.feature.GeoFeatureServerHome"
| * type="Stateless" view-type="remote"
| * @ejb.transaction type="Required"
| */
| public abstract class GeoFeatureServerBean implements SessionBean {
| /**
| * @ejb.interface-method
| */
| public GeoFeature findGeoFeature(GeoFeaturePk geoFeaturePk) throws NoSuchElementException {
| GeoFeature value = (GeoFeature) cache.getByKey(geoFeaturePk);
| if (value == null) {
| getLogger().debug(geoFeaturePk + " not cached...loading");
| value = getGeoFeatureDao().findById(geoFeaturePk, false);
| cache.addToCache(value);
| }
| return value;
| }
| }
|
The DAO code looks like this ...
| @SuppressWarnings("unchecked")
| public V findById(long id, boolean lock) {
| V entity;
| try {
| Session session = getSession();
| // Transaction tx = session.beginTransaction();
| if (lock)
| entity = (V) session.load(getPersistentClass(), id, LockMode.UPGRADE);
| else
| entity = (V) session.load(getPersistentClass(), id);
| } catch (HibernateException e) {
| throw new NoSuchElementException(e.getMessage());
| }
|
| return entity;
| }
|
If I un-comment the session.beginTransaction(), the exception won't be thrown. However, we're using CMT, so I shouldn't have to do that. In fact, I shouldn't be allowed to do that. Touching the transaction should throw an exception AFAIK.
My hibernate.properties file ...
hibernate.dialect=org.hibernate.dialect.MySQLDialect
| hibernate.connection.driver_class=com.mysql.jdbc.Driver
| hibernate.connection.url=jdbc:mysql://integration:3306/mbgeo
| hibernate.connection.username=xxxx
| hibernate.connection.password=xxxx
|
| #don't use hibernate's pooling! http://www.hibernate.org/hib_docs/v3/reference/en/html/session-configurat...
| hibernate.c3p0.min_size=5
| hibernate.c3p0.max_size=20
| hibernate.c3p0.timeout=1800
| hibernate.c3p0.max_statements=50
|
| hibernate.session_factory_name=hibernate/session_factory
| jta.UserTransaction=UserTransaction
|
| #hibernate.current_session_context_class=jta #can leave unset, default is jta
| hibernate.transaction.factory_class=org.hibernate.transaction.CMTTransactionFactory
| hibernate.transaction.manager_lookup_class=org.hibernate.transaction.JBossTransactionManagerLookup
| hibernate.transaction.flush_before_completion=true
|
| hibernate.cache.provider_class=org.hibernate.cache.NoCacheProvider
| hibernate.show_sql=true
| hibernate.format_sql=true
| hibernate.generate_statistics=true
|
| hibernate.bytecode.use_reflection_optimizer=false
| hibernate.bytecode.provider=javassist
Anybody have any ideas as to what I'm doing wrong?
-Jason
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3972708#3972708
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3972708
19 years, 7 months