@javax.persistence.Entity
class ConsumableResource extends Id {
- @Column(name = "NAME")
- var name : String = _
-
@Column(name = "RESOURCE_TYPE")
var restype : String = _
var cost : Float = _
@OneToMany(mappedBy = "resource", targetEntity = classOf[ServiceItemConfig],
- cascade = Array(CascadeType.REMOVE))
+ cascade = Array(CascadeType.ALL))
var configItems : java.util.Set[ServiceItemConfig] = new java.util.HashSet[ServiceItemConfig]()
}
\ No newline at end of file
@JoinColumn(name = "SUB_GROUP_ID")
var group :Group = _
- @ManyToOne(optional = true)
+ @ManyToOne(cascade = Array(CascadeType.ALL),
+ optional = true)
var org : Organization = _
@ManyToMany(targetEntity = classOf[User],
- cascade= Array(CascadeType.PERSIST, CascadeType.MERGE))
+ cascade= Array(CascadeType.ALL))
@JoinTable(name="USER_GROUP",
joinColumns = Array(new JoinColumn(name="USER_ID")),
inverseJoinColumns = Array(new JoinColumn(name="GROUP_ID")))
var parent : Organization = _
@OneToMany(mappedBy = "org", targetEntity = classOf[Group],
- cascade = Array(CascadeType.REMOVE))
+ cascade = Array(CascadeType.ALL))
var groups : java.util.Set[Group] = new java.util.HashSet[Group]()
@OneToMany(mappedBy = "org", targetEntity = classOf[User],
- cascade = Array(CascadeType.REMOVE))
+ cascade = Array(CascadeType.ALL))
var users : java.util.Set[User] = new java.util.HashSet[User]()
}
\ No newline at end of file
@javax.persistence.Entity
@Table(name = "SERVICE_ITEM")
+@NamedQuery(name="allServiceItems", query="select si from ServiceItem si")
class ServiceItem extends Id {
@Column(name = "URL")
var url : String = ""
@OneToMany(mappedBy = "item", targetEntity = classOf[ServiceItemConfig],
- cascade = Array(CascadeType.REMOVE))
+ cascade = Array(CascadeType.ALL))
var configItems : java.util.Set[ServiceItemConfig] = new java.util.HashSet[ServiceItemConfig]()
}
import javax.persistence._
-case class ServiceItemConfigKey(var item_id : Int, var resource_id : Int)
+case class ServiceItemConfigKey(var item_id : Long, var resource_id : Long)
@Table(name = "SERVICE_ITEM_CONFIG")
@IdClass(classOf[ServiceItemConfigKey])
@javax.persistence.Entity
class ServiceItemConfig {
- //def this() = this("")
-
@javax.persistence.Id
@Column(name ="SERVICE_ITEM_ID", nullable=false, updatable=false,
insertable=false)
- var item_id: Int = _
+ var item_id: Long = _
@javax.persistence.Id
@Column(name ="CONSUMABLE_RESOURCE_ID", nullable=false, updatable=false,
insertable=false)
- var resource_id: Int = _
+ var resource_id: Long = _
@ManyToOne (cascade = Array(CascadeType.ALL),
targetEntity = classOf[ServiceItem])
@ManyToMany(targetEntity = classOf[Group],
mappedBy = "users",
- cascade = Array(CascadeType.PERSIST, CascadeType.MERGE))
+ cascade = Array(CascadeType.ALL))
var groups : java.util.Set[Group] = new java.util.HashSet[Group]()
}
\ No newline at end of file
assertTrue(org1.id != org2.id)
- val results = DB.find(classOf[Organization], org1.id)
+ var results = DB.find(classOf[Organization], org1.id)
assert(results.exists(o => o.id == org1.id))
+
+ //Add to entity with composite key
+ val srv1 = new ServiceItem
+ srv1.url = "http://foo.bar/"
+ DB.persist(srv1)
+
+ val res1 = new ConsumableResource
+ res1.restype = "CPU"
+ res1.unittype = "CPU/hr"
+ res1.cost = 10
+ DB.persist(res1)
+
+ val res2 = new ConsumableResource
+ res2.restype = "RAM"
+ res2.unittype = "MB/hr"
+ res2.cost = 11
+ DB.persist(res2)
+
+ addServiceConfig(srv1, res1, 4)
+ addServiceConfig(srv1, res2, 128)
+
+ val a = DB.find(classOf[ServiceItem], srv1.id)
+ assert(a.exists(o => o.id == srv1.id))
+ assertEquals(2, a.get.configItems.size)
+
+ //Entity navigation tests
+ val all = DB.findAll("allServiceItems")
+ }
+
+ private def addServiceConfig(srv : ServiceItem,
+ res : ConsumableResource,
+ value : Int) {
+ val srvcfg2 = new ServiceItemConfig
+ srvcfg2.item = srv
+ srvcfg2.resource = res
+ srvcfg2.quantity = value
+ srv.configItems.add(srvcfg2)
+ res.configItems.add(srvcfg2)
+ DB.persist(srvcfg2)
+ DB.flush()
}
@After