Hello,

We use pojos with relations to interface-types. With annotations of attributes 
as shown below (field: SelektionAnfrageDefinition definition), I get this error:

<openjpa-1.0.2-r420667:627158 fatal user error> 
org.apache.openjpa.persistence.ArgumentException:
"de.huk.selektionen.jpa.test.SelektionImpl.definition" has columns with 
targets, but OpenJPA does not support any joins on this mapping in this context.


public interface Selektion extends Serializable{
        public String getName();
        public void setName(String newName);

        public java.util.Date getErstelldatum();
        public void setErstelldatum(java.util.Date newErstelldatum);

        public de.huk.vtp.selektionen.bo.SelektionAnfrageDefinition 
getDefinition();
        public void 
setDefinition(de.huk.vtp.selektionen.bo.SelektionAnfrageDefinition 
newDefinition);
}


@Entity
@Table(name="TASELEKTION")
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
public class SelektionImpl implements Selektion, Serializable {

        @Column(name="NAME", length=50)
        @Id private String name;

        @Column(name="ERSTELLDATUM", length=50)
        private Date erstelldatum;

        @OneToOne(fetch=FetchType.EAGER, cascade={CascadeType.PERSIST}, 
optional=true)
        @JoinColumn(name="DEFINITION", referencedColumnName="DEF_ID")
        protected SelektionAnfrageDefinition definition;

        //getters/setters
}


public interface SelektionAnfrageDefinition extends Serializable {
        public String getDefinitionId();
        public void setDefinitionId(String definitionId);
}

@Entity
@Table(name="TADEFINITION")
public class SelektionAnfrageDefinitionImpl implements  
SelektionAnfrageDefinition, Serializable {

        @Id
        @Column(name="DEF_ID", length=50)
        protected String definitionId;
}




I put annotation of @OneToOne Join along with the getter in the Interface 
definition (again see below). This worked, but when trying to flush complex 
entities, I receive error due to cascading.

<openjpa-1.0.2-r420667:627158 fatal user error> 
org.apache.openjpa.persistence.InvalidStateException:
 Encountered unmanaged object "[EMAIL PROTECTED]" in persistent field 
"de.huk.selektionen.jpa.test.SelektionImpl.definition" of managed object 
"[EMAIL PROTECTED]" during flush.  However, this field does not allow to be 
CascadeType.PERSIST.  You cannot flush unmanaged objects.
FailedObject: [EMAIL PROTECTED]

public interface Selektion extends Serializable{
        public String getName();
        public void setName(String newName);

        public java.util.Date getErstelldatum();
        public void setErstelldatum(java.util.Date newErstelldatum);

        @OneToOne(fetch=FetchType.EAGER, cascade={CascadeType.PERSIST}, 
optional=true)
        @JoinColumn(name="DEFINITION", referencedColumnName="DEF_ID")
        public de.huk.vtp.selektionen.bo.SelektionAnfrageDefinition 
getDefinition();
        public void 
setDefinition(de.huk.vtp.selektionen.bo.SelektionAnfrageDefinition 
newDefinition);
}


@Entity
@Table(name="TASELEKTION")
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
public class SelektionImpl implements Selektion, Serializable {

        @Column(name="NAME", length=50)
        @Id private String name;

        @Column(name="ERSTELLDATUM", length=50)
        private Date erstelldatum;

        protected SelektionAnfrageDefinition definition;

        //getters/setters
}


public interface SelektionAnfrageDefinition extends Serializable {
        public String getDefinitionId();
        public void setDefinitionId(String definitionId);
}

@Entity
@Table(name="TADEFINITION")
public class SelektionAnfrageDefinitionImpl implements  
SelektionAnfrageDefinition, Serializable {

        @Id
        @Column(name="DEF_ID", length=50)
        protected String definitionId;
}



Here is the piece of test code

SelektionAnfrageDefinition definition001 = new SelektionAnfrageDefinitionImpl();
definition001.setDefinitionId("001");

SelektionAnfrage aktuelleAnfrage001 = new SelektionAnfrageImpl();
aktuelleAnfrage001.setId("1");
aktuelleAnfrage001.setName("Selektion Partner (ID 1)");
aktuelleAnfrage001.setStatus("abgeschlossen");
aktuelleAnfrage001.setErstelldatum(date);
aktuelleAnfrage001.setAbrufzeit("noch 8 Tage");
aktuelleAnfrage001.setDefinition(definition001);

this.getEm().persist(aktuelleAnfrage001);
this.getEm().flush();



And here my persistence.xml

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_1_0.xsd";
        version="1.0">
        <persistence-unit name="Selektionen_DB">
                
<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
                
<jta-data-source>java:comp/env/jdbc/selektionendb</jta-data-source>
                <class>de.huk.vtp.selektionen.bo.SelektionImpl</class>
                
<class>de.huk.vtp.selektionen.bo.SelektionAnfrageDefinitionImpl</class>
                <properties>
                        <property name="openjpa.TransactionMode" 
value="managed"/>
                        <property name="openjpa.ConnectionFactoryMode" 
value="managed"/>
                        <property name="openjpa.jdbc.DBDictionary" value="db2"/>
                        <property name="openjpa.jdbc.Schema" value="T7"/>
                         <property name="openjpa.jdbc.SynchronizeMappings" 
value="buildSchema"/>
                </properties>
        </persistence-unit>
</persistence>


Thanks for your help
Annette Scherer
Abteilung Informatik

HUK-COBURG
Bahnhofsplatz
96444 Coburg
Telefon  09561 96-1718
Telefax  09561 96-3671
E-Mail   [EMAIL PROTECTED]
Internet www.HUK.de
=============================================================
HUK-COBURG Haftpflicht-Unterstützungs-Kasse kraftfahrender Beamter Deutschlands 
a. G. in Coburg
Reg.-Gericht Coburg HRB 100; St.-Nr. 9212/101/00021
Sitz der Gesellschaft: Bahnhofsplatz, 96444 Coburg
Vorsitzender des Aufsichtsrats: Werner Strohmayr.
Vorstand: Rolf-Peter Hoenen (Sprecher), Wolfgang Flaßhoff, Stefan Gronbach, 
Klaus-Jürgen Heitmann, Dr. Christian Hofer, Dr. Wolfgang Weiler.
=============================================================

Reply via email to