You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@openjpa.apache.org by gilbertoca <gi...@gmail.com> on 2010/05/05 20:06:43 UTC

[Unidirectional OneToOne Relationships] strange column (OTHER) generation

OS: opensuse 11.2
java: openjdk 1.6
openjpa: 2.0.0

persistence-2_0-final-spec.pdf:
"If the dependent entity has a single primary key attribute (i.e, the
relationship attribute or an attribute that corresponds to the relationship
attribute) and the primary key of the parent entity is a simple primary key,
the primary key of the dependent entity is a simple primary key of the same
type as that of the parent entity (and neither EmbeddedId nor IdClass is
specified). In this case, either (1) the relationship attribute is annotated
Id, or (2) a separate Id attribute is specified and the relationship
attribute is annotated MapsId (and the value element of the MapsId
annotation is not specified)."
[code]
 <entity class="Person">
        <!-- CREATE TABLE PERSON (
            ID INTEGER NOT NULL,
            ADDRESS VARCHAR(100),
            NAME VARCHAR(100) NOT NULL,
            P_TYPE CHAR(2) NOT NULL, //NATURALPERSON(NP) OR LEGALENTITY(LE)
            VERSION SMALLINT NOT NULL
            CONSTRAINT PERSON_PKEY PRIMARY KEY (ID)
        );
        -->
        <table name="person"/>
        <inheritance strategy="JOINED"/>
        <discriminator-column name="p_type" column-definition="CHAR(2)"
length="2" discriminator-type="STRING"/>
        <attributes>
            <id name="id">
                <column name="id"/>
                <generated-value strategy="AUTO"/>
            </id>
            <basic name="name">
                <column length="100"/>
            </basic>
            <basic name="address">
                <column length="100"/>
            </basic>
            <version name="version"/>
        </attributes>
    </entity>
    <entity class="Customer">
        <!--
            CREATE TABLE CUSTOMER (
                PERSON_ID INTEGER NOT NULL,
                PAYMENT_DAY INTEGER,
                CONSTRAINT CUSTOMER_PK PRIMARY KEY (PERSON_ID)
            );
        -->
        <table name="customer"/>
        <named-query name="Customer.findAll">
            <query>SELECT l FROM Customer l</query>
            <!--hint name="javax.persistence.cacheRetrieveMode" 
value="CacheRetrieveMode.BYPASS"/-->
        </named-query>
        <named-query name="Customer.deleteById">
            <query>DELETE FROM Customer l WHERE l.id = :id</query>
        </named-query>
        <attributes>
            <id name="id">
                <column name="person_id"/>
            </id>
            <basic name="paymentDay">
                <column name="payment_day"/>
            </basic>
            <one-to-many name="vehicles" target-entity="Vehicle"
mapped-by="customer"/>
            <one-to-one name="person" target-entity="Person" maps-id="">
                <join-column name="person_id" referenced-column-name="id" />
            </one-to-one>

        </attributes>
    </entity>
[/code]

Openjpa generates the following database schema:
[code]
1113  parkPU  INFO   [main] openjpa.Runtime - OpenJPA dynamically loaded the
class enhancer. Any classes that were not enhanced at build time will be
enhanced when they are loaded by the JVM.
1248  parkPU  INFO   [main] openjpa.Runtime - Starting OpenJPA 2.0.0
3672  parkPU  TRACE  [main] openjpa.jdbc.SQL - <t 24518695, conn 3735543>
executing prepstmnt 336863 SELECT SEQUENCE_SCHEMA, SEQUENCE_NAME FROM
INFORMATION_SCHEMA.SEQUENCES
3672  parkPU  TRACE  [main] openjpa.jdbc.SQL - <t 24518695, conn 3735543> [0
ms] spent
3788  parkPU  TRACE  [main] openjpa.jdbc.SQL - <t 24518695, conn 6141358>
executing stmnt 1693359 DROP TABLE park.customer
3799  parkPU  TRACE  [main] openjpa.jdbc.SQL - <t 24518695, conn 6141358>
[11 ms] spent
3801  parkPU  TRACE  [main] openjpa.jdbc.SQL - <t 24518695, conn 13399097>
executing stmnt 3125250 DROP TABLE park.legal_entity
3803  parkPU  TRACE  [main] openjpa.jdbc.SQL - <t 24518695, conn 13399097>
[1 ms] spent
3804  parkPU  TRACE  [main] openjpa.jdbc.SQL - <t 24518695, conn 15555997>
executing stmnt 10184846 DROP TABLE park.natural_person
3806  parkPU  TRACE  [main] openjpa.jdbc.SQL - <t 24518695, conn 15555997>
[1 ms] spent
3808  parkPU  TRACE  [main] openjpa.jdbc.SQL - <t 24518695, conn 15508334>
executing stmnt 20780034 DROP TABLE park.person
3817  parkPU  TRACE  [main] openjpa.jdbc.SQL - <t 24518695, conn 15508334>
[4 ms] spent
3819  parkPU  TRACE  [main] openjpa.jdbc.SQL - <t 24518695, conn 6196605>
executing stmnt 21719810 DROP TABLE park.price_table
3821  parkPU  TRACE  [main] openjpa.jdbc.SQL - <t 24518695, conn 6196605> [1
ms] spent
3823  parkPU  TRACE  [main] openjpa.jdbc.SQL - <t 24518695, conn 8687308>
executing stmnt 23383006 DROP TABLE park.vehicle
3826  parkPU  TRACE  [main] openjpa.jdbc.SQL - <t 24518695, conn 8687308> [2
ms] spent
3828  parkPU  TRACE  [main] openjpa.jdbc.SQL - <t 24518695, conn 27532487>
executing stmnt 3551336 DROP TABLE park.vehicle_type
3830  parkPU  TRACE  [main] openjpa.jdbc.SQL - <t 24518695, conn 27532487>
[1 ms] spent
3911  parkPU  TRACE  [main] openjpa.jdbc.SQL - <t 24518695, conn 8032804>
executing prepstmnt 28497887 SELECT SEQUENCE_SCHEMA, SEQUENCE_NAME FROM
INFORMATION_SCHEMA.SEQUENCES
3912  parkPU  TRACE  [main] openjpa.jdbc.SQL - <t 24518695, conn 8032804> [0
ms] spent



3930  parkPU  TRACE  [main] openjpa.jdbc.SQL - <t 24518695, conn 23240305>
executing stmnt 12724795 CREATE TABLE park.customer (person_id BIGINT NOT
NULL, payment_day INTEGER, PERSON OTHER, PRIMARY KEY (person_id))
3933  parkPU  TRACE  [main] openjpa.jdbc.SQL - <t 24518695, conn 23240305>
[2 ms] spent



3936  parkPU  TRACE  [main] openjpa.jdbc.SQL - <t 24518695, conn 1309601>
executing stmnt 16009656 CREATE TABLE park.legal_entity (person_id BIGINT
NOT NULL, dt_foundation DATE, taxpayers_id VARCHAR(20), PRIMARY KEY
(person_id))
3938  parkPU  TRACE  [main] openjpa.jdbc.SQL - <t 24518695, conn 1309601> [1
ms] spent
3941  parkPU  TRACE  [main] openjpa.jdbc.SQL - <t 24518695, conn 8546123>
executing stmnt 14031599 CREATE TABLE park.natural_person (person_id BIGINT
NOT NULL, dt_birth DATE, legal_document VARCHAR(20), PRIMARY KEY
(person_id))
3943  parkPU  TRACE  [main] openjpa.jdbc.SQL - <t 24518695, conn 8546123> [1
ms] spent
3946  parkPU  TRACE  [main] openjpa.jdbc.SQL - <t 24518695, conn 28409161>
executing stmnt 16408563 CREATE TABLE park.person (id BIGINT NOT NULL,
address VARCHAR(100), name VARCHAR(100), p_type CHAR(2), version INTEGER,
PRIMARY KEY (id))
3947  parkPU  TRACE  [main] openjpa.jdbc.SQL - <t 24518695, conn 28409161>
[1 ms] spent
3950  parkPU  TRACE  [main] openjpa.jdbc.SQL - <t 24518695, conn 29856972>
executing stmnt 3238031 CREATE TABLE park.price_table (id INTEGER NOT NULL,
item VARCHAR(50) NOT NULL, price NUMERIC(12,2), PRIMARY KEY (id))
3952  parkPU  TRACE  [main] openjpa.jdbc.SQL - <t 24518695, conn 29856972>
[1 ms] spent
3954  parkPU  TRACE  [main] openjpa.jdbc.SQL - <t 24518695, conn 14731203>
executing stmnt 11400638 CREATE TABLE park.vehicle (license_plate
VARCHAR(20) NOT NULL, color VARCHAR(20), customer_id BIGINT, price_table_id
INTEGER, v_type VARCHAR(255), PRIMARY KEY (license_plate))
3956  parkPU  TRACE  [main] openjpa.jdbc.SQL - <t 24518695, conn 14731203>
[2 ms] spent
3959  parkPU  TRACE  [main] openjpa.jdbc.SQL - <t 24518695, conn 33440105>
executing stmnt 654830 CREATE TABLE park.vehicle_type (v_type VARCHAR(20)
NOT NULL, manufacturer VARCHAR(50), model VARCHAR(20), PRIMARY KEY (v_type))
3961  parkPU  TRACE  [main] openjpa.jdbc.SQL - <t 24518695, conn 33440105>
[2 ms] spent
3963  parkPU  TRACE  [main] openjpa.jdbc.SQL - <t 24518695, conn 20045467>
executing stmnt 12319324 CREATE INDEX I_PERSON_DTYPE ON park.person (p_type)
3965  parkPU  TRACE  [main] openjpa.jdbc.SQL - <t 24518695, conn 20045467>
[1 ms] spent
3975  parkPU  TRACE  [main] openjpa.jdbc.SQL - <t 24518695, conn 15430449>
executing stmnt 29045356 CREATE INDEX I_VEHICLE_CUSTOMER ON park.vehicle
(customer_id)
3976  parkPU  TRACE  [main] openjpa.jdbc.SQL - <t 24518695, conn 15430449>
[1 ms] spent
3979  parkPU  TRACE  [main] openjpa.jdbc.SQL - <t 24518695, conn 32498805>
executing stmnt 30913058 CREATE INDEX I_VEHICLE_PRICETABLE ON park.vehicle
(price_table_id)
3980  parkPU  TRACE  [main] openjpa.jdbc.SQL - <t 24518695, conn 32498805>
[1 ms] spent
3983  parkPU  TRACE  [main] openjpa.jdbc.SQL - <t 24518695, conn 9170930>
executing stmnt 8385974 CREATE INDEX I_VEHICLE_VTYPE ON park.vehicle
(v_type)
3984  parkPU  TRACE  [main] openjpa.jdbc.SQL - <t 24518695, conn 9170930> [1
ms] spent
5572  parkPU  TRACE  [main] openjpa.jdbc.SQL - <t 24518695, conn 30283254>
executing prepstmnt 2347637 SELECT t1.id, t1.p_type, t1.version, t1.address,
t1.name, t0.dt_foundation, t0.taxpayers_id FROM park.legal_entity t0 INNER
JOIN park.person t1 ON t0.person_id = t1.id WHERE t1.p_type = ?
[params=(String) LE]
5604  parkPU  TRACE  [main] openjpa.jdbc.SQL - <t 24518695, conn 30283254>
[31 ms] spent
5717  parkPU  TRACE  [main] openjpa.jdbc.SQL - <t 24518695, conn 30283254>
executing prepstmnt 32316862 SELECT t0.version FROM park.person t0 WHERE
t0.id = ? [params=(long) 1002]
5717  parkPU  TRACE  [main] openjpa.jdbc.SQL - <t 24518695, conn 30283254>
[0 ms] spent
5720  parkPU  TRACE  [main] openjpa.jdbc.SQL - <t 24518695, conn 30283254>
executing prepstmnt 19220932 SELECT t0.version FROM park.person t0 WHERE
t0.id = ? [params=(long) 1003]
5720  parkPU  TRACE  [main] openjpa.jdbc.SQL - <t 24518695, conn 30283254>
[0 ms] spent
5722  parkPU  TRACE  [main] openjpa.jdbc.SQL - <t 24518695, conn 30283254>
executing prepstmnt 17691874 SELECT t0.version FROM park.person t0 WHERE
t0.id = ? [params=(long) 1004]
5722  parkPU  TRACE  [main] openjpa.jdbc.SQL - <t 24518695, conn 30283254>
[0 ms] spent
5774  parkPU  TRACE  [main] openjpa.jdbc.SQL - <t 24518695, conn 31147154>
executing prepstmnt 4587712 SELECT SEQUENCE_VALUE FROM
park.OPENJPA_SEQUENCE_TABLE WHERE ID = ? FOR UPDATE [params=(int) 0]
5775  parkPU  TRACE  [main] openjpa.jdbc.SQL - <t 24518695, conn 31147154>
[1 ms] spent
5777  parkPU  TRACE  [main] openjpa.jdbc.SQL - <t 24518695, conn 31147154>
executing prepstmnt 7526515 UPDATE park.OPENJPA_SEQUENCE_TABLE SET
SEQUENCE_VALUE = ? WHERE ID = ? AND SEQUENCE_VALUE = ? [params=(long) 1551,
(int) 0, (long) 1501]
5779  parkPU  TRACE  [main] openjpa.jdbc.SQL - <t 24518695, conn 31147154>
[1 ms] spent
5795  parkPU  TRACE  [main] openjpa.jdbc.SQL - <t 24518695, conn 33276757>
executing prepstmnt 23632030 INSERT INTO park.person (id, address, name,
p_type, version) VALUES (?, ?, ?, ?, ?) [params=(long) 1501, (String)
LegalEntity, (String) address, (String) LE, (int) 1]
5814  parkPU  TRACE  [main] openjpa.jdbc.SQL - <t 24518695, conn 33276757>
[0 ms] spent
5816  parkPU  TRACE  [main] openjpa.jdbc.SQL - <t 24518695, conn 33276757>
executing prepstmnt 30749358 INSERT INTO park.legal_entity (person_id,
dt_foundation, taxpayers_id) VALUES (?, ?, ?) [params=(long) 1501, (Date)
1974-02-03, (String) TAXPAYERS100]
5816  parkPU  TRACE  [main] openjpa.jdbc.SQL - <t 24518695, conn 33276757>
[0 ms] spent
5838  parkPU  TRACE  [main] openjpa.jdbc.SQL - <t 24518695, conn 26533782>
executing prepstmnt 32455963 SELECT t1.id, t1.p_type, t1.version,
t1.address, t1.name, t0.dt_foundation, t0.taxpayers_id FROM
park.legal_entity t0 INNER JOIN park.person t1 ON t0.person_id = t1.id WHERE
t1.p_type = ? [params=(String) LE]
5839  parkPU  TRACE  [main] openjpa.jdbc.SQL - <t 24518695, conn 26533782>
[0 ms] spent
5841  parkPU  TRACE  [main] openjpa.jdbc.SQL - <t 24518695, conn 26533782>
executing prepstmnt 14875627 SELECT t0.version FROM park.person t0 WHERE
t0.id = ? [params=(long) 1002]
5842  parkPU  TRACE  [main] openjpa.jdbc.SQL - <t 24518695, conn 26533782>
[0 ms] spent
5844  parkPU  TRACE  [main] openjpa.jdbc.SQL - <t 24518695, conn 26533782>
executing prepstmnt 602878 SELECT t0.version FROM park.person t0 WHERE t0.id
= ? [params=(long) 1003]
5845  parkPU  TRACE  [main] openjpa.jdbc.SQL - <t 24518695, conn 26533782>
[1 ms] spent
5846  parkPU  TRACE  [main] openjpa.jdbc.SQL - <t 24518695, conn 26533782>
executing prepstmnt 32697810 SELECT t0.version FROM park.person t0 WHERE
t0.id = ? [params=(long) 1004]
5847  parkPU  TRACE  [main] openjpa.jdbc.SQL - <t 24518695, conn 26533782>
[0 ms] spent
5876  parkPU  TRACE  [main] openjpa.jdbc.SQL - <t 24518695, conn 9684209>
executing prepstmnt 15868406 DELETE FROM park.legal_entity WHERE person_id =
? [params=(long) 1501]
5877  parkPU  TRACE  [main] openjpa.jdbc.SQL - <t 24518695, conn 9684209> [1
ms] spent
5879  parkPU  TRACE  [main] openjpa.jdbc.SQL - <t 24518695, conn 9684209>
executing prepstmnt 25798515 DELETE FROM park.person WHERE id = ? AND
version = ? [params=(long) 1501, (int) 1]
5880  parkPU  TRACE  [main] openjpa.jdbc.SQL - <t 24518695, conn 9684209> [0
ms] spent
5885  parkPU  TRACE  [main] openjpa.jdbc.SQL - <t 24518695, conn 12170776>
executing prepstmnt 9423995 SELECT t1.id, t1.p_type, t1.version, t1.address,
t1.name, t0.dt_foundation, t0.taxpayers_id FROM park.legal_entity t0 INNER
JOIN park.person t1 ON t0.person_id = t1.id WHERE t1.p_type = ?
[params=(String) LE]
5886  parkPU  TRACE  [main] openjpa.jdbc.SQL - <t 24518695, conn 12170776>
[1 ms] spent
5887  parkPU  TRACE  [main] openjpa.jdbc.SQL - <t 24518695, conn 12170776>
executing prepstmnt 6417481 SELECT t0.version FROM park.person t0 WHERE
t0.id = ? [params=(long) 1002]
5888  parkPU  TRACE  [main] openjpa.jdbc.SQL - <t 24518695, conn 12170776>
[0 ms] spent
5889  parkPU  TRACE  [main] openjpa.jdbc.SQL - <t 24518695, conn 12170776>
executing prepstmnt 14664546 SELECT t0.version FROM park.person t0 WHERE
t0.id = ? [params=(long) 1003]
5890  parkPU  TRACE  [main] openjpa.jdbc.SQL - <t 24518695, conn 12170776>
[0 ms] spent
5892  parkPU  TRACE  [main] openjpa.jdbc.SQL - <t 24518695, conn 12170776>
executing prepstmnt 18634171 SELECT t0.version FROM park.person t0 WHERE
t0.id = ? [params=(long) 1004]
5893  parkPU  TRACE  [main] openjpa.jdbc.SQL - <t 24518695, conn 12170776>
[0 ms] spent
[/code]
-- 
View this message in context: http://openjpa.208410.n2.nabble.com/Unidirectional-OneToOne-Relationships-strange-column-OTHER-generation-tp5010290p5010290.html
Sent from the OpenJPA Users mailing list archive at Nabble.com.