Hibernate 3 Formulas

Hibernate 3 Formulas

Other Cases: element, map-key-many-to-many, and More

element, like property, can be given the evaluated value of any valid formula expression.



The usage of formula with map-key-many-to-many is similar to that of map-key. However, map-key-many-to-many is usually used in a ternary relationship, where a map key is a referenced object itself, rather than a referenced attribute.

However, there are cases where formula is not supported. Some databases (e.g., Oracle 7) do not support embedded select statements (i.e., a select SQL embedded in the select part of an SQL statement), and in these cases a formula used as evaluation result is not supported. Therefore, you need to first check whether embedded select SQL statements are supported.

Since the SQL that results from Hibernate's mappings takes the formula expression as part of its select target, knowing the SQL dialect of your database will help enrich your use of formula, though it may reduce code portability.

Category 2: Using a formula for Joining

many-to-one

Another common scenario in real-world data models is proprietary relationship mapping, meaning mappings other than the basic one-to-one, one-to-many, and many-to-many relationships. formula is one of the elements provided for this kind of proprietary relationship management. Figure 5 shows an example in which one company can have many contact persons, but only one of them is the default contact person. One company having many contact persons is a typical one-to-many relationship. However, in order to identify the default contact person, the ContactPerson table uses an attribute defaultFlag (where 1 is yes and 0 is no).


Figure 5. User role data schema


Figure 6. User role object model

In order to interpret default contact person relationship into the object model (Figure 6), we use the following mapping:




<hibernate-mapping>

  <class name="Company" table="Company">

    <id name="id" />

    <many-to-one 

      name="defaultContactPerson" 

      property-ref="defaultContactPerson">

        <column name="id"/>

        <formula>1</formula>

        </many-to-one>

  </class>

  <class name="Person" >

    <id name="id" />

    <properties name="defaultContactPerson">

        <property name="companyID" />

        <property name="defaultFlag" />

    </properties>

  </class>

</hibernate-mapping>



Above, we group companyID and defaultFlag in a properties element with the name defaultContactPerson, which forms a unique key of the Person table. The many-to-one element inside of the Company class joins on the defaultContactPerson properties element in the Person class. The resulting SQL will be something like:

select c.id, p.id from Company c, Person p where p.companyID=c.id and p.defaultFlag=1

Prev  [1] [2] [3] [4] Next

Close    To Top
  • Prev Article-Java:
  • Next Article-Java:
  • Now: Tutorial for Web and Software Design > Java > JDOnJDBCnSQLJ > Java Content
    Photoshop Tutorial
     

    Special Effect

      3D Effect
      Photoshop Articles
    Programming Tutorial
     

    C/C++ Tutorial

      Visual Basic
      C# Tutorial
    Database Tutorial
     

    MySQL Tutorial

      MS SQL Tutorial
      Oracle Tutorial
    Geek Tutorial
     

    Blogging Tutorial

      RSS Tutorial
      Podcasting Tutorial
    Graphic Design Tutorial
      Coreldraw Tutorial
      Illustrator Tutorial
      3D Tutorials
    Webmaster Articles
     

    Domain Service

      Web Hosting
      Site Promotion
    Java Tutorial/ Articles
     

    Java Servlets

      JavaEE Tutorial
     

    JavaBeans Tutorial

    XML Tutorial/ Articles
     

    XML Style

      AJAX Tutorial
      XML Mobile
    Flash Tutorial/ Articles
     

    Flash Video

      Action Script
      Flash Articles
    OS Tutorial/ Articles
      Linux Tutorial
      Symbian Tutorial
      MacOS Tutorial
    Personal Tech
      Hardware Tutorial
      Software Tutorial
      Online Auction