2012-04-04 196 views
1

我有以下@MappedSuperclass和@Entity:为什么我的@MappedSuperClass不起作用?

@MappedSuperclass 
public class SuperClass implements Serializable {....} 

@Entity 
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS) 
@Table(name = "TABLE1") 
public class Table1 extends SuperClass implements Serializable {...} 

@Entity 
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS) 
@Table(name = "TABLE2") 
public class Table2 extends SuperClass implements Serializable {...} 

在数据库中,这两个表具有相同的列所以我所有的属性都在超:

@Id 
private String attr1; 

@Id 
private String attr2; 

@Column(name="DATA") 
private String data; 

// getters and setters 

但是,当我尝试执行与@Entity(表1和表2)之一的查询,我得到一个OpenJPA的错误:

Error pre-processing class table1 with we[email protected]205c54b' 
<openjpa-1.1.0-r422266:657916 fatal user error> 
org.apache.openjpa.util.MetaDataException: Type "class SuperClass" with application identity and no superclass does not declare an id class. 
This type is not eligible for builtin identity, so it must declare an id class. 

我不明白为什么属性@Id不FO在@Entity类中。

如果任何人有任何想法,随时帮我:)

问候,

Cytemax

+0

我的@Entity类必须有@IdClass(SuperClassPK.class),因为我的主键包含两个属性(attr1&attr2)。 – Cytemax 2012-04-11 09:50:06

+0

这个@IdClass声明了两个属性,并且必须覆盖“equals”和“hascode”方法。也许这会帮助别人;)。 – Cytemax 2012-04-11 09:56:14

回答