net.java.ao
Annotation Type OneToOne


@Retention(value=RUNTIME)
@Target(value=METHOD)
public @interface OneToOne

Marks a method as relevant only to a one-to-one relation. This informs ActiveObjects that the return value for the method in question should be determined from a one-to-one relation onto the type in the return value. For example:

public interface User {
     // ...
     
     @OneToOne
     public Password getPassword();
 }

Thus the return value of the getPassword() method would be determined by a query something like the following:

SELECT id FROM passwords WHERE userID = ?

If the where() clause is specified, it will be used in addition to the base, necessary criterion to determine the returned entities. Thus, the one-to-one relation could be referenced in the following way:

public interface User {
     // ...
     
     @OneToOne(where="deleted = FALSE")
     public Password getPassword();
 }

This would lead to a query like the following:

SELECT id FROM passwords WHERE userID = ? AND (deleted = FALSE)

Author:
Daniel Spiewak

Optional Element Summary
 String reverse
          The name of the corresponding getter method in the remote entity.
 String where
          A String clause allowing developer-specified additional conditions to be imposed on the relationship.
 

reverse

public abstract String reverse

The name of the corresponding getter method in the remote entity.

If this is not specified, a warning will be logged at migration time, and ActiveObjects may behave in unexpected ways. Future versions of ActiveObjects may require that this property be specified.

See Also:
AO-325
Default:
""

where

public abstract String where

A String clause allowing developer-specified additional conditions to be imposed on the relationship. The String must be a proper SQL WHERE clause:

"deleted = FALSE"

One must be extremely careful with this sort of thing though because sometimes (as is the case with the above sample), the unparameterized code may not execute as expected against every database (due to differences in typing and value handling). Thus, in all but non-trivial cases, defined implementations should be used.

Default:
""


Copyright © 2007-2014. All Rights Reserved.