openjpa-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Zbynek Vavros <Zbynek_Vav...@cz.ibm.com>
Subject Composite key problem
Date Mon, 13 Aug 2012 05:38:46 GMT

Hi,

Im having trouble with composite key and OpenJPA.
I was using hibernate so excuse my lack of OpenJPA knowledge.

I have a table already created and one that I cannot modify :

CREATE TABLE `admin_skills` (
`admin_id` INT(11) NOT NULL,
`account_id` INT(11) NOT NULL,
`skill` INT(11) NOT NULL DEFAULT '5',
UNIQUE INDEX `account_id` (`account_id`, `admin_id`),
INDEX `admin_id` (`admin_id`),
CONSTRAINT `admin_skills_ibfk_1` FOREIGN KEY (`admin_id`) REFERENCES
`admins` (`idadmin`) ON UPDATE CASCADE ON DELETE CASCADE,
CONSTRAINT `admin_skills_ibfk_2` FOREIGN KEY (`account_id`) REFERENCES
`account` (`account_id`) ON UPDATE CASCADE ON DELETE CASCADE
)

I have created following entity/key :

@Entity
@Table(name = "admin_skills")
public class DitaAdminSkill {

	@EmbeddedId
	private DitaAdminSkillPK id;

	@Column(name = "skill")
	private Integer skill;

	//getters & setters

@Embeddable
public class DitaAdminSkillPK implements Serializable{

	@ManyToOne
	@JoinColumn(name = "admin_id")
	private DitaAdmin admin;

	@ManyToOne
	@JoinColumn(name = "account_id")
	private DitaAccount account;

	//getters & setters

This works just fine with Hibernate 4.1.4Final :

	ApplicationContext applicationContext = new
ClassPathXmlApplicationContext(new String[] {"applicationContext.xml",
"db_beans.xml"});
	DitaAdminSkillDao dispDao = applicationContext.getBean
(DitaAdminSkillDao.class);
	List<DitaAdminSkill> disp = dispDao.findAll();
	System.out.println(disp.get(0).getId().getAccount());


But when I try to run this with OpenJPA I get an error : Unknown column
't0.id' in 'field list'
Seems like it is ignoring the @EmbeddedId annotation and tries to select
directly the ID, which do not exists.
I have been trying to use @IdClass instead but with pretty much same
result :(

Since OpenJPA has general lack of support/forums/everything, I wasnt able
to find anything useful through google.

If anyone has any comments, please, it will be more than welcomed.

Oh, and I am using OpenJPA 2.1.5 with Maven (tried 2.2.0-SNAPSHOT but does
the same) :

<!-- Apache implementation of JPA2.0 -->
<dependency>
	<groupId>org.apache.openjpa</groupId>
	<artifactId>openjpa-all</artifactId>
	<version>2.1.5</version>
</dependency>

Thanks !!!!



Mime
View raw message