Okay. I think I'm starting to grasp what you want.

You have a store and each store is of a certain type? So you have stores of the 
type "department store", "hardware store" etc.

I guess there are fewer types of stores than stores. If that is so you do not 
have a @OneToOne relationship but @ManyToOne: Many stores belong to one store 
type. In SQL terminology this would be a 1:n relationship between types and 
stores.

If that is the case you can simply do this (leaving aside your table_name 
problem for a moment):


  | public class Store {
  |   private Type storeType;
  |   @ManyToOne
  |   @JoinColumn(name = "STORE_TYPE_ID")
  |     public Type getStoreType() {
  |         return storeType;
  |     }
  | //
  | }
  | 

If you set up the Type class correctly the persistence layer will automatically 
determine that  the join column must refer to TYPE.TYPE_ID and add a constraint 
to enforce this foreign key relationship if necessary.

Just to make this complete: I would strongly recommend that you drop your 
requirement of having the table_name in your type table. (I assume this is not 
really a table_name for use in dynamic sql but a string value to identify the 
"type of type" :-)) If you want this it would require you to use composite keys 
which is IMHO painful.

But THEORETICALLY you could do it like this: You create a class TypePK for the 
primary key of Type with a field for TYPE_ID (Integer) and a String for 
TABLE_NAME and annotate the class with  @Embeddable, then you replace the 
type_id and table_name properties with a single property of the  TypePk class 
and annotate it with @EmbeddedId. 
Then you change your @ManyToOne relationship to something like:

@ManyTo
@JoinColumns({
        @JoinColumn(name="STORE_TYPE_ID", referencedColumnName="TYPE_ID"),
        @JoinColumn(name="TABLE_NAME", referencedColumnName="TABLE_NAME")
    })

Finally adjust the setter of your Store to prevent setting types that do not 
have "STORE" as the table_name property of the type's typePK.

Sounds complicated? It is -  and in my opinion not worth the effort.

Regards

Felix

P.S.: BTW: If the relationship between store and type is really 1:1 then you 
could solve this more elegantly by using the inheritance strategy joined.


View the original post : 
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4034352#4034352

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4034352
_______________________________________________
jboss-user mailing list
jboss-user@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to