Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.java.databases > #381
| 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 |
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 | Next — Previous in thread | Find similar
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