-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 3 posts ] 
Author Message
 Post subject: bag mapping -> doppelte Elemente
PostPosted: Fri Aug 04, 2006 5:39 am 
Newbie

Joined: Fri Aug 04, 2006 5:25 am
Posts: 2
OK zuerst mal mein Tabellenmapping:

Data.hbm.xml:
Code:
<?xml version="1.0" encoding="UTF-8"?>

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

<hibernate-mapping
>
    <class
        name="muh.model.Data"
        table="Table_Data"
        dynamic-update="true"
    >

        <id
            name="id"
            column="data_ID"
            type="java.lang.Integer"
        >
            <generator class="identity">     
            </generator>
        </id>

<bag
            name="conditions"
            table="Table_Data_Condition"
            lazy="false"
            cascade="all-delete-orphan"
            order-by="d_Condition_ID asc"
        >

            <key
                column="d_Condition_ID"
            >
            </key>

            <many-to-many
                class="muh.model.Condition"
                column="condition_ID"
                outer-join="auto"
             />

        </bag>
    </class>

</hibernate-mapping>




und hier die dazugehörige
Data.java
Quote:
public class Data implements Serializable
{
Integer id;
List conditions;

/**
* @hibernate.id column = "data_ID" generator-class = "identity"
*/
public Integer getId()
{
return id;
}

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

public List getConditions()
{
return conditions;
}

public void setConditions(List conditions2)
{
this.conditions = conditions2;
}
}



Die 'Conditions' müssen in einer java.util.List sein. Allerdings kann ich die Conditions nicht direkt als 'List' mappen, weil noch andere Tools auf die Datenbank zugreifen und mir dann immer die von Hibernate benötigte Index-Spalte mit 'nulls' kaputtmachen.

Das Problem mit dem 'bag' ist, dass Elemente doppelt auftreten dürfen.
Sorgt da Hibernate für, dass Elemente nicht doppelt auftreten, oder kann mir das wirklich passieren?


Top
 Profile  
 
 Post subject:
PostPosted: Sat Aug 05, 2006 6:35 am 
Beginner
Beginner

Joined: Fri May 19, 2006 11:34 am
Posts: 29
Werd zwar nicht schlau, was du nun genau willst, also ob in deiner Collection doppelte Elemente auftreten dürfen oder nicht. Fraglich natürlich auch, wo er sie hernehmen will, sofern sie nicht in der Db stehen.

Eine Bag ist nichts anderes als eine List. Und in einer List dürfen nunmal Elemente doppelt vorkommen.

Willst du verhindern, dass Elemente doppelt in deiner Collection sind, solltest du eine Set benutzen.


Top
 Profile  
 
 Post subject:
PostPosted: Sat Aug 05, 2006 8:28 am 
Newbie

Joined: Fri Aug 04, 2006 5:25 am
Posts: 2
Ich möchte in meiner Collection keine doppelten Elemente haben.
Die Software besteht schon, ich muss nun im Nachhinein das Mapping der Collections ändern. Früher waren die Collections als List gemappt, aber die anderen Applikationen, die die selben Tabellen benutzen, zerstören mit immer die index Spalte.

In der API von hibernate steht, dass eine bag doppelte Elemente haben kann (can) und nicht dass doppelte Elemente erlaubt sind (allow). Eine etwas unglückliche Formulierung.

Ich kann mir auch nicht vorstellen, dass Elemente doppelt vorkommen, weil ja in der Datenbank auch nichts doppelt ist.

Ein Set wäre aufwendig, weil ich unbedingt die methode
Code:
Object get(int index)
benötige.
Ich habe keine Lust den Quellcode an tausend Stellen zu ändern, wenn ich diese Methode nicht mehr hätte.


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 3 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.