Hibernate - Composite ID e c3p0

0 respostas
ACDias

Olá,

Estou com um problema para mapear chaves compostas no hibernate e não faço a mínima idéia do que possa estar acontecendo. Criei três classes assim:
@Entity
@Table(name = "bo_users")
public class Users implements Serializable {

	@Id
	@Column(length = 20, nullable = false)
	private String username;
	@Column(length = 20, nullable = false)
	private String password;
	@OneToMany
	private List<MonitoredUsers> monitoredUsers;
}

@Embeddable
public class MonitoredUsersPk implements Serializable {
	@ManyToOne
	private Users user;
	private String monitoredUser;
}

@Entity
@Table(name = "bo_monitored_users")
public class MonitoredUsers implements Serializable {

	@Id
	private MonitoredUsersPk pk;
}
E meu sessionFactory:
static {
		try {

			sessionFactory = new AnnotationConfiguration().
				setProperty("hibernate.session_factory_name", "BOConnection").
				setProperty("hibernate.hbm2ddl.auto", "update").
				setProperty("hibernate.dialect", "org.hibernate.dialect.SQLServerDialect").
				setProperty("hibernate.show_sql", "false").
				setProperty("hibernate.order_updates", "true").
				setProperty("hibernate.cglib.use_reflection_optimizer", "true").
				setProperty("hibernate.connection.driver_class", "com.microsoft.sqlserver.jdbc.SQLServerDriver").
				setProperty("hibernate.connection.url", "jdbc:sqlserver://localhost\SQLEXPRESS;integratedSecurity=true").
				setProperty("hibernate.connection.autocommit", "false").
				setProperty("hibernate.c3p0.min_size", "0").
				setProperty("hibernate.c3p0.max_size", "100").
				setProperty("hibernate.c3p0.timeout", "60").
				setProperty("hibernate.c3p0.max_statements", "0").
				addAnnotatedClass(Users.class).
				addAnnotatedClass(MonitoredUsersPk.class).
				addAnnotatedClass(MonitoredUsers.class).
				buildSessionFactory();
		} catch (Throwable ex) {
			throw new ExceptionInInitializerError(ex);
		}
	}
Quanto dou um openSession no sessionFactory eu tenho a seguinte exception:
java.lang.ExceptionInInitializerError
	at br.com.cedro.database.HibernateSessionFactory.<clinit>(HibernateSessionFactory.java:57)
	at br.com.cedro.config.InitListener.contextInitialized(InitListener.java:87)
	at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3830)
	at org.apache.catalina.core.StandardContext.start(StandardContext.java:4337)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
	at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
	at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
	at org.apache.catalina.core.StandardService.start(StandardService.java:516)
	at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
	at org.apache.catalina.startup.Catalina.start(Catalina.java:566)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
Caused by: java.lang.NullPointerException
	at org.hibernate.cfg.AnnotationConfiguration.processFkSecondPassInOrder(AnnotationConfiguration.java:416)
	at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:309)
	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1319)
	at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:867)
	at br.com.cedro.database.HibernateSessionFactory.<clinit>(HibernateSessionFactory.java:55)
	... 16 more

Não faço idéia do que eu possa estar fazendo de errado, esta exception não diz nada, não dá mensagem alguma...

Outra dúvida: estou utilizando o c3p0 e gostaria de ter alguma noção dos valores a serem configurados. Não tenho muita noção do max de conexões ou se é recomendável utilizá-lo para pool de statements também.

Obrigado.

Criado 12 de janeiro de 2010
Respostas 0
Participantes 1