2016-09-11 2 views
0

Я на самом деле обучения в спящий режим, и я думаю, что @Embbebed и @Embbedable ее не работает для меняEmbbedable спящий режим аннотаций не работает

Я получил это:

@Entity 
public class Poi { 
@Id @GeneratedValue 
private long id; 

@Embedded 
private PoiType poiType; 

private String name; 

@SuppressWarnings("unused") 
private Poi(){} 

public Poi(PoiType type,String name) { 
    this.poiType = type; 
    this.name = name; 
} 

@Embeddable 
public class TypeA extends PoiType { 

private Integer number; 

@SuppressWarnings("unused") 
private TypeA(){} 

public TypeA(Integer num) { 
    this.number=num; 
} 

XML

<?xml version="1.0" encoding="UTF-8"?> 
<persistence xmlns="http://java.sun.com/xml/ns/persistence" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence 
    http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd" 
    version="1.0"> 


<persistence-unit name="db" transaction-type="RESOURCE_LOCAL"> 
    <provider>org.hibernate.ejb.HibernatePersistence</provider> 


    <class>tpAnual.POIs.Poi</class> 
    <class>tpAnual.POIs.PoiType</class> 
    <class>tpAnual.POIs.TypeA</class> 



    <properties> 
    <property name="hibernate.archive.autodetection" value="class"/>   

     <property name="hibernate.connection.driver_class" value="org.hsqldb.jdbcDriver" /> 
     <property name="hibernate.connection.url" value="jdbc:hsqldb:mem:app-db" /> 
     <property name="hibernate.connection.username" value="sa" /> 
     <property name="hibernate.connection.password" value="" /> 
     <property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect" /> 


     <property name="hibernate.show_sql" value="true" /> 
     <property name="hibernate.format_sql" value="true" /> 
     <property name="use_sql_comments" value="true" /> 
     <property name="hibernate.hbm2ddl.auto" value="update" /> 

    </properties> 

</persistence-unit> 

Когда я запускаю тест (все, выставиться правильно) на микшере только печатает:

Hibernate: вставка в Пои (ид, имя) значения (по умолчанию,?)

Чего мне не хватает? Большое спасибо!

ответ

0

Наследование во встроенных объектах вряд ли имеет смысл, поскольку оно требует другого набора столбцов в таблице содержащихся сущностей в зависимости от фактического класса внедренного объекта, но во время объявления ORM ничего не знает о классы, которые могут быть получены из базового класса, который вы хотите встроить. Я слышал, что EclipseLink так или иначе делает это (я не хочу даже думать о том, какие злые дела они делают, чтобы вытащить этот трюк), но, насколько я знаю, спящий режим не поддерживает его.

Смежные вопросы