Herança no hibernate

Olá Pessoal.
Então estou tentando fazer uma herança no hibernate mas esta dando erro, a herança é por union mas com Annotation, abaixo os fontes:

[code]
package struts.teste.heranca;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;

@Entity
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
public abstract class SuperClasse {

@Id
@GeneratedValue
private Long id;

public Long getId() {
	return id;
}

public void setId(Long id) {
	this.id = id;
}

}

package struts.teste.heranca;

import javax.persistence.Entity;

@Entity
public class SubClasse extends SuperClasse{

private String nome;

public String getNome() {
	return nome;
}

public void setNome(String nome) {
	this.nome = nome;
}

}[/code]
O XML

<!DOCTYPE hibernate-configuration PUBLIC
	"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
	"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
	<session-factory>
		<property name="hibernate.connection.url">jdbc:mysql://localhost/struts</property>
		<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
		<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
		<property name="hibernate.connection.username">root</property>
		<property name="hibernate.connection.password">root</property>
		<property name="hibernate.show_sql">true</property>
		
		<property name="hibernate.format_sql">true</property>
		<property name="log4j.org.properties">info</property>
		<!-- pool de conexoes -->
		<property name="hibernate.c3p0.min_size">5</property>
		<property name="hibernate.c3p0.max_size">20</property>
		<property name="hibernate.c3p0.timeout">180</property>
		<property name="hibernate.c3p0.idle_test_period">100</property>
		
		
		<mapping class="struts.teste.heranca.SuperClasse" />
		<mapping class="struts.teste.heranca.SubClasse" />	
		
	</session-factory>
</hibernate-configuration>
AnnotationConfiguration conf = new AnnotationConfiguration();
		conf.configure();
		Session session = conf.buildSessionFactory().openSession();
		Transaction tran = session.beginTransaction();
		tran.begin();
		SubClasse sub = new SubClasse();
		sub.setNome("GABRIEL");
		session.save(sub);
		tran.commit();
		session.close();

Agora o Erro

Exception in thread "main" org.hibernate.MappingException: Cannot use identity column key generation with <union-subclass> mapping for: struts.teste.heranca.SuperClasse
	at org.hibernate.persister.entity.UnionSubclassEntityPersister.<init>(UnionSubclassEntityPersister.java:67)
	at org.hibernate.persister.PersisterFactory.createClassPersister(PersisterFactory.java:61)
	at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:226)
	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1294)
	at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:915)
	at struts.teste.heranca.GeraBanco.main(GeraBanco.java:15)

Quem poder me ajudr fico grato, falow

PS: a tabela no banco de dado o hibernate esta gerando, mas, na hora de persistir não.

Bom Mudei o

@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)

para a subclasse ai funcionou. Mas não etendi o por que, qual é a diferença…?

Falow

Uso outra estratégia de herança, coloco na SuperClasse e funciona. Vê se tem alguma coisa a ver com isso.

Então até a onde e entendi é o seguinte.

Queria utilizar a herança, que no livro do Gavin King mostra, lá fala de uma herança (umas da primeiras) com a UNION do SQL, por exemplo
Tenho uma classe abstrata e então nela coloco o @Entity @Inheritance(strategy=InheritanceType.TABLE_PER_CLASS) public abstract class SuperClasse { }

Assim nas subclasses haverá uma tabela diferente para cada uma. E quando for fazer uma busca polifórmica gerará um SQL com sub-select e union. Select campo1,campo2,clazz from( select campo1,campo2, 1 as clazz from subclasse1 union select campo1,campo2, 2 as clazz from subclasse2)
Repare que com a UNION dos subselects tenho a busca poliformica para a SUPERCLASSE.
E quando coloca o @Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
nas subclasses o que acontece é que se cria uma tabela para super classe com um atributo tipo para identificar qual subclasse é.
Na verdade eu entendi, mas qria fazer o exemplo, acho q se mapear por xml da certo, pq o erro que esta pedindo é <union-subclass> nas subclasses.
Mas não curto XML, mas não tenho certeza se o problema está em não usar XML.