1 package org
.codehaus
.groovy
.grails
.orm
.hibernate
3 import org
.codehaus
.groovy
.grails
.commons
.GrailsDomainClass
6 * Longest class name in history!
8 * @author Graeme Rocher
11 * Created: Mar 13, 2008
13 class BidirectionalOnetoManyWithInheritanceRelationshipManagementTests
extends AbstractGrailsHibernateTests
{
15 protected void onSetUp() {
17 class BidirectionalOnetoManyManySide {
21 static hasMany = [oneSides:BidirectionalOnetoManyOneSide]
23 class BidirectionalOnetoManySubManySide extends BidirectionalOnetoManyManySide {
26 class BidirectionalOnetoManyOneSide {
29 BidirectionalOnetoManyManySide manySide
30 static belongsTo = [manySide:BidirectionalOnetoManyManySide]
38 void testRelationshipManagementMethods() {
39 GrailsDomainClass manySideClass
= ga
.getDomainClass("BidirectionalOnetoManyManySide")
40 GrailsDomainClass oneSideClass
= ga
.getDomainClass("BidirectionalOnetoManyOneSide")
41 GrailsDomainClass subManySideClass
= ga
.getDomainClass("BidirectionalOnetoManySubManySide")
43 def collection
= subManySideClass
.getPropertyByName("oneSides")
47 assertTrue collection
.isBidirectional()
48 def otherSide
= collection
.getOtherSide()
53 def manySide
= manySideClass
.newInstance()
54 def oneSide1
= oneSideClass
.newInstance()
56 manySide
.addToOneSides(oneSide1
)
57 manySide
.save(flush
:true) // OK
58 assertTrue
"1", manySide
.oneSides?
.size() == 1 // OK
59 assertTrue
"2", oneSide1
.manySide
!= null // OK
60 assertTrue
"3", oneSide1
.manySide?
.id
== manySide
.id
// OK
62 def subManySide
= subManySideClass
.newInstance()
63 def oneSide2
= oneSideClass
.newInstance()
65 subManySide
.addToOneSides(oneSide2
)
66 assertTrue
"4", subManySide
.oneSides?
.size() == 1 // OK
67 assertTrue
"5", oneSide2
.manySide
!= null // NG
68 assertTrue
"6", oneSide2
.manySide?
.id
== subManySide
.id
69 subManySide
.save(flush
:true)