giovedì 3 novembre 2011

Java -> Scala: Inner Annotations

Da poco mi sono convinto che è giunto il momento di provare a utilizzare Scala non più per gioco ma cercando di creare qualcosa di concreto in ambiente Enterprise.
L'utilizzo di Scala in ambiente Enterprise non può non scontrarsi con gli RDBMS.
La questione che mi sono trovato ad affrontare è quello di volere esprimere attraverso le annotazioni in scala una relazione ManyToMany attraverso una tabella di join.
Di seguito illustro la soluzione in Java e poi quella in Scala:

Java
@ManyToMany(targetEntity = Product)
@JoinTable(name = "ORDERS_PRODUCTS",
joinColumns = {@JoinColumn(name="ORDER_ID",
referencedColumnName ="ORDER_ID")},
inverseJoinColumns = {@JoinColumn(name="PRODUCT_ID",
referencedColumnName = "PRODUCT_ID")}
List<Product> products = null;
Scala
@ManyToMany(targetEntity = classOf[Product])
@JoinTable(name = "ORDERS_PRODUCTS",
joinColumns = Array(new JoinColumn(name="ORDER_ID",
referencedColumnName ="ORDER_ID")),
inverseJoinColumns = Array(new JoinColumn(name="PRODUCT_ID",
referencedColumnName = "PRODUCT_ID")))
@BeanProperty
var products:List[Product] = null

Ricordo che l'estratto del codice scritto in Scala compila soltanto se viene usato un compilatore Scala la cui versionesia maggiore uguale alla 2.8.0 a causa di un bug presente nelle versioni precedenti.

0 commenti: