Ayuda con JPA y modelos desnormalizados

58 views
Skip to first unread message

Gustavo Arjones

unread,
Dec 27, 2011, 9:04:38 AM12/27/11
to Play Framework Latam
Hola Chicos, cómo les fue la Navidad?

Tengo una consulta a los oráculos de Play / JPA :

Estoy armando un ABM para la base de datos MySQL que usamos para
autenticación, la base es auto-generado por Membership de
Microsoft.NET, por eso tiene unas cuestiones de diseño que no estoy
logrando emularlas bien en JPA.

Tengo dos entidades:

CREATE TABLE `users` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`PKID` varchar(36) NOT NULL,
`Username` varchar(255) NOT NULL,
`ApplicationName` varchar(255) NOT NULL,
`Email` varchar(100) NOT NULL,
`Comment` varchar(255) DEFAULT NULL,
......
......
......
PRIMARY KEY (`PKID`),
UNIQUE KEY `id` (`id`),
UNIQUE KEY `Username` (`Username`),
KEY `users_id_idx` (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

CREATE TABLE `usersinroles` (
`Username` varchar(255) NOT NULL,
`Rolename` varchar(255) NOT NULL,
`ApplicationName` varchar(255) NOT NULL,
KEY `Username_idxfk` (`Username`),
KEY `Rolename_idxfk` (`Rolename`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

Mi problema es la tabla usersinroles ya que esa no tiene una @Id
tradicional, toda relación se da por el Username + Rolename +
ApplicationName, estuve buscando cómo generar la clave compuesta y no
encontré una forma de hacerla.

Al intentar usar el model de Role, que mapea la tabla usersinroles, me
tira el error:
play.exceptions.UnexpectedException: Cannot get the object @Id for an
object of type class models.Role

Alguien tiene alguna idea?

Muchas gracias!
Gus

opensas

unread,
Dec 27, 2011, 10:42:54 PM12/27/11
to Play Framework Latam
acá hay varios ejemplos de JPA con claves compuestas:

http://weblogs.java.net/blog/bleonard/archive/2006/11/using_composite.html
http://eureka.ykyuen.info/2010/05/02/java-jpa-using-composite-keys/
http://docs.oracle.com/cd/B31017_01/web.1013/b28221/cmp30cfg001.htm

No te olvides de extender de generic model para evitar el Long Id como
clave...

(chas gracias a jaliss por el tip)

saludos

sas
Reply all
Reply to author
Forward
0 new messages