Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.databases > #381

Re: hibernate mapping pro

From "jlp" <jlp@THRWHITE.remove-dii-this>
Subject Re: hibernate mapping pro
Message-ID <493aa185$0$969$ba4acef3@news.orange.fr> (permalink)
Newsgroups comp.lang.java.databases
References <493aa0f7$0$969$ba4acef3@news.orange.fr>
Date 2011-04-27 15:23 +0000
Organization TDS.net

Show all headers | View raw


  To: comp.lang.java.databases
jlp a |-crit :
> Mark Sudau a |-crit :
> 
>> Hi folks,
>>
>> I have a problem using Hibernate Annotations. I try to map the 
>> following entity relation_
>>
>> ER-Diagram:
>>
>> +------+ 1           * +-------------------+ *          1 +------+
>> |ClassA| ------<>----- |ClassAClassBMapping| -----<>----- |ClassB|
>> +------+               +-------------------+              +------+
>>
>>
>> Intention:
>> a unidirectional mapping of ClassB to ClassA without a special entity 
>> for ClassAClassBMapping
>>
>> The following Scenario is working:
>>
>> Enum MyEnum{
>>     A,B,C
>> }
>>
>> @Entity (name="entity_a")
>> @Table(name="table_a")
>> class ClassA {
>>     @Id
>>     @GeneratedValue(strategy = GenerationType.AUTO)
>>     private Long id;
>>
>>     @OneToMany(targetEntity = ClassB.class)
>>     @MapKey(name = "classb_id")
>>     @JoinTable(name = "ClassAClassBMapping", joinColumns = 
>> @JoinColumn(columnDefinition = "classa_id", table = "table_a", name = 
>> "id", nullable = false),
>>             inverseJoinColumns = @JoinColumn(columnDefinition = 
>> "classb_id", table = "table_b", name = "id", nullable = false),
>>             uniqueConstraints = @UniqueConstraint(columnNames = {
>>             "classa_id", "classb_id"
>>     }))
>>     private Map<MyEnum,ClassB> bClasses;
>> }
>>
>> @Entity (name="entity_b")
>> @Table(name="table_b")
>> ClassB {
>>     @Id
>>     @GeneratedValue(strategy = GenerationType.AUTO)
>>     private Long id;
>>
>>     @Embedded
>>     private MyEnum myEnum;
>> }
>>
>> The trouble with this solution is the point, that the enumeration is 
>> not a property of ClassB but classification of ClassB in ClassA. As I 
>> use the enumeration as a property I will get lots of redundant 
>> datasets, that slowdown the application and make it difficult to 
>> handle modifications.
>>
>> My favored solution is shown below but that solution doesn't work.
>>
>> Entities:
>>
>> @Embeddable
>> Enum MyEnum{
>>     A,B,C
>> }
>>
>> @Entity (name="entity_a")
>> @Table(name="table_a")
>> class ClassA {
>>     @Id
>>     @GeneratedValue(strategy = GenerationType.AUTO)
>>     private Long id;
>>
>>     @OneToMany(targetEntity = ClassB.class)
>>     @MapKey(name = "myEnum")
>>     @JoinTable(name = "ClassAClassBMapping", joinColumns = 
>> @JoinColumn(columnDefinition = "classa_id", table = "table_a", name = 
>> "id", nullable = false),
>>             inverseJoinColumns = @JoinColumn(columnDefinition = 
>> "classb_id", table = "table_b", name = "id", nullable = false),
>>             uniqueConstraints = @UniqueConstraint(columnNames = {
>>             "classa_id", "myEnum"
>>     }))
>>     private Map<MyEnum,ClassB> bClasses;
>> }
>>
>> @Entity (name="entity_b")
>> @Table(name="table_b")
>> ClassB {
>>     @Id
>>     @GeneratedValue(strategy = GenerationType.AUTO)
>>     private Long id;
>> }
>>
>> I cannot deliver an errormessage, because spring-framework only 
>> reports that the sessionfactory cannot be instantiated. As soon as I 
>> remove the mapping or change the mapping to the first example all 
>> JUnit-tests work fine. So I am sure that the configuration of spring 
>> is ok.
>>
>> Any idea's what is the problem?
>>
>> Kind Regards
>> Mark
> 
> I don't understand your solution:
> If you have A 1->* B
> in class A, put a Collection of B ..
to complete , relation tables are for manytomany relations

---
 * Synchronet * The Whitehouse BBS --- whitehouse.hulds.com --- check it out free usenet!
--- Synchronet 3.15a-Win32 NewsLink 1.92
Time Warp of the Future BBS - telnet://time.synchro.net:24

Back to comp.lang.java.databases | Previous | NextPrevious in thread | Find similar


Thread

hibernate mapping problem "Mark Sudau" <mark.sudau@THRWHITE.remove-dii-this> - 2011-04-27 15:23 +0000
  Re: hibernate mapping pro "jlp" <jlp@THRWHITE.remove-dii-this> - 2011-04-27 15:23 +0000
    Re: hibernate mapping pro "jlp" <jlp@THRWHITE.remove-dii-this> - 2011-04-27 15:23 +0000

csiph-web