-->
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.  [ 2 posts ] 
Author Message
 Post subject: Frage zu Legacy Datenmodell (OSCommerce) Lokalisierung i18n
PostPosted: Thu Apr 27, 2006 5:42 am 
Newbie

Joined: Fri Apr 08, 2005 6:44 am
Posts: 5
Hallo,

ich hatte meine Frage letztes Jahr schon mal im Englischen Forum gestellt, aber keine Antwort bekommen.

Folgendes Problem besteht:

Es gibt ein Datenmodell, welches (vereinfacht) folgendermassen aussieht

table product
int id;
float preis;

table product_locale
int product_id;
int locale_id;
string product_name;

Die daten sind wie folgt hinterlegt:

insert into product ('1', '50,00');

insert into product_locale ('1', 'de', 'Auto');
insert into product_locale ('1', 'en', 'Car');


Zu einem Produkt ist der name in mehreren Sprachen hinterlegt.

Eine Abfrage mittels sql select funktioniert wunderbar zB.

select * from product_locale as a1 left join product as a2 on a1.product_id=a2.id where language_id='1';


Anforderung an das programm:
Gefordert: Ausgabe einer liste mit "lokalisierten" produkten.

Wie könnte denn ein sinnvolles mapping in hibernate aussehen, dass man "Produkt-Objekte" erhält:

class product
int id;
float preis;
int locale_id;
String product_name;

FolgendesMapping funktioniert NICHT:

Code:
  <class name="Product" table="product_locale">
   <composite-id>
              <key-property name="product_id" type="int" column="product_id"/>
              <key-property name="language_id" type="int" column="language_id"/>
      </composite-id>     

      <property name="product_name" type="string"/>

      <join table="product" inverse="true" >

         <key column="id"/> <-- funzt nicht

      <property name="preis" type="float"/>
         
      </join>       
   </class>


Fehlermeldung: "Foreign key must have same number of columns as the referenced primary key"

Wie könnte hier ein sinnvolles mapping ausschauen?
Oder sollte man das Objektmodell ändern?


Die Tabellen und Daten kann ich nicht anpassen, das sind bestehende legacy modelle.

Hat jemand dazu eine Idee, oder einen Hinweis?

Vielen Dank!

PS: ich habe den gesamten text auswendig ohne "copy und paste" geschrieben, es können kleine logische fehler enthalten sein, aber das Grundproblem sollte erklärt sein


Top
 Profile  
 
 Post subject:
PostPosted: Fri Apr 28, 2006 9:08 am 
Beginner
Beginner

Joined: Thu Apr 21, 2005 5:37 am
Posts: 45
Location: Switzerland
Also rein vom Modell her würde ich sage du müsstes eine Auto-Klasse machen, die eine Collection von product_locales hat. Der Foreign-Key beschränkt sich also auf die 1, das "de" gehört nicht dazu.
Dann baust du dir einen Abfrageservice der die Collection je nach angegebener Sprache filtert.
Als Convenience-Methode würde ich dann noch sowas wie Auto.getLocalizedName() oder so machen, die dir automatisch das erste (und einzige) Objekt der product_locales zurückgibt.
War nur mein erster gedanke.

see also: http://blog.hibernate.org/cgi-bin/blosx ... 06/23#i18n


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 2 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.