All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.java.ao.OneToMany Maven / Gradle / Ivy

Go to download

This is the full Active Objects library, if you don't know which one to use, you probably want this one.

The newest version!
/*
 * Copyright 2007 Daniel Spiewak
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"); 
 * you may not use this file except in compliance with the License. 
 * You may obtain a copy of the License at
 * 
 *	    http://www.apache.org/licenses/LICENSE-2.0 
 * 
 * Unless required by applicable law or agreed to in writing, software 
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package net.java.ao;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 

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

* *
public interface Company {
 *     // ...
 *
 *     @OneToMany
 *     public Person[] getEmployees();
 * }
* *

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

* * SELECT id FROM people WHERE companyID = ? * *

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

* *
public interface Company {
 *     // ...
 *
 *     @OneToMany(where="deleted = FALSE")
 *     public Person[] getEmployees();
 * }
* *

This would lead to a query like the following:

* * SELECT id FROM people WHERE companyID = ? AND (deleted = FALSE) * * @author Daniel Spiewak */ @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) public @interface OneToMany { /** *

The name of the corresponding getter method in the entities returned by the annotated method.

* *

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 AO-325 */ String reverse() default ""; /** *

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.

*/ String where() default ""; }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy