Quiero usar el generador de modelo Meta JPA 2 para Hibernate (Versión 1.1.1-Final) (en una aplicación de primavera). Como utilizo una Superclase mapeada que es la base para todas las Entidades, y esta clase está ubicada en un contenedor diferente (para reutilizar) Necesito asignar esta clase explícitamente en XML (solo para la generación del modelo meta porque funciona sin ninguna cosas adicionales a tiempo) --- Que alguien tenga una pista sobre cómo resolver esto en general, pero no es la pregunta.JPA 2 XML Asignación de incrustado para que funcione con el generador de modelo Hibernate Meta
Esta superclase asignada (BusinessEntity) usa una clase incrustada (BusinessId).
@SuppressWarnings("serial")
@MappedSuperclass
public abstract class BusinessEntity<T extends Serializable>
implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
private Long id;
@Embedded
private BusinessId<T> businessId;
...
}
@Embeddable
public class BusinessId<T> implements Serializable {
@Column(nullable = false, unique = true, name = "businessId")
private long businessId;
...
}
Pero no consigo la asignación de trabajo junto con el generador: Si utilizo este orm.xml
<?xml version="1.0" encoding="UTF-8"?>
<entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm
http://java.sun.com/xml/ns/persistence/orm_2_0.xsd"
version="2.0">
<mapped-superclass class="BusinessEntity"
access="FIELD">
<attributes>
<id name="id">
<column nullable="false"/>
<generated-value strategy="AUTO"/>
</id>
<embedded name="businessId"/>
</attributes>
</mapped-superclass>
<embeddable class="BusinessId"
access="FIELD">
<attributes>
<basic name="businessId">
<column nullable="false" unique="true"/>
</basic>
</attributes>
</embeddable>
</entity-mappings>
El Generador crear esta dos archivos:
@StaticMetamodel(BusinessEntity.class)
public abstract class BusinessEntity_ {
public static volatile SingularAttribute<BusinessEntity, Long> id;
}
@StaticMetamodel(BusinessId.class)
public abstract class BusinessId_ {
public static volatile SingularAttribute<BusinessId, Long> businessId;
}
Puede ver, ¡falta el campo incrustado businessId en BuinessEntity!
Cuando se sustituye la <embedded name="businessId"/>
por <basic name="businessId" />
la Generador crear esta clase uncompilable (El Genérico T
no puede se han resuelto).
@StaticMetamodel(BusinessEntity.class)
public abstract class BusinessEntity_ {
public static volatile SingularAttribute<BusinessEntity, Long> id;
public static volatile
SingularAttribute<BusinessEntity, BusinessId<T>> businessId;
}
Así que mi pregunta es cómo asignar las cosas correctas? - ¿O hay una mejor manera en general?