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

javax.persistence.OneToOne Maven / Gradle / Ivy

The newest version!
package javax.persistence;

import static java.lang.annotation.ElementType.FIELD;
import static java.lang.annotation.ElementType.METHOD;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
import static javax.persistence.FetchType.EAGER;

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

/**
 * Defines a single-valued association to another entity that has one-to-one multiplicity. It is not normally necessary to specify the
 * associated target entity explicitly since it can usually be inferred from the type of the object being referenced. If the relationship is
 * bidirectional, the non-owning side must use the mappedBy element of the OneToOne annotation to specify the
 * relationship field or property of the owning side.
 * 
 * 

* The OneToOne annotation may be used within an embeddable class to specify a relationship from the embeddable class to an * entity class. If the relationship is bidirectional and the entity containing the embeddable class is on the owning side of the * relationship, the non-owning side must use the mappedBy element of the OneToOne annotation to specify the * relationship field or property of the embeddable class. The dot (".") notation syntax must be used in the mappedBy element * to indicate the relationship attribute within the embedded attribute. The value of each identifier used with the dot notation is the name * of the respective embedded field or property. * *

 *    Example 1: One-to-one association that maps a foreign key column
 * 
 *    // On Customer class:
 * 
 *    @OneToOne(optional=false)
 *    @JoinColumn(
 *    	name="CUSTREC_ID", unique=true, nullable=false, updatable=false)
 *    public CustomerRecord getCustomerRecord() { return customerRecord; }
 * 
 *    // On CustomerRecord class:
 * 
 *    @OneToOne(optional=false, mappedBy="customerRecord")
 *    public Customer getCustomer() { return customer; }
 * 
 * 
 *    Example 2: One-to-one association that assumes both the source and target share the same primary key values.
 * 
 *    // On Employee class:
 * 
 *    @Entity
 *    public class Employee {
 *    	@Id Integer id;
 * 
 *    	@OneToOne @MapsId
 *    	EmployeeInfo info;
 *    	...
 *    }
 * 
 *    // On EmployeeInfo class:
 * 
 *    @Entity
 *    public class EmployeeInfo {
 *    	@Id Integer id;
 *    	...
 *    }
 * 
 * 
 *    Example 3: One-to-one association from an embeddable class to another entity.
 * 
 *    @Entity
 *    public class Employee {
 *       @Id int id;
 *       @Embedded LocationDetails location;
 *       ...
 *    }
 * 
 *    @Embeddable
 *    public class LocationDetails {
 *       int officeNumber;
 *       @OneToOne ParkingSpot parkingSpot;
 *       ...
 *    }
 * 
 *    @Entity
 *    public class ParkingSpot {
 *       @Id int id;
 *       String garage;
 *       @OneToOne(mappedBy="location.parkingSpot") Employee assignedTo;
 *        ...
 *    }
 * 
 * 
* * @since Java Persistence 1.0 */ @Target({ METHOD, FIELD }) @Retention(RUNTIME) public @interface OneToOne { /** * (Optional) The operations that must be cascaded to the target of the association. * *

* By default no operations are cascaded. */ CascadeType[] cascade() default {}; /** * (Optional) Whether the association should be lazily loaded or must be eagerly fetched. The EAGER strategy is a requirement on the * persistence provider runtime that the associated entity must be eagerly fetched. The LAZY strategy is a hint to the persistence * provider runtime. */ FetchType fetch() default EAGER; /** * (Optional) The field that owns the relationship. This element is only specified on the inverse (non-owning) side of the association. */ String mappedBy() default ""; /** * (Optional) Whether the association is optional. If set to false then a non-null relationship must always exist. */ boolean optional() default true; /** * (Optional) Whether to apply the remove operation to entities that have been removed from the relationship and to cascade the remove * operation to those entities. * * @since Java Persistence 2.0 */ boolean orphanRemoval() default false; /** * (Optional) The entity class that is the target of the association. * *

* Defaults to the type of the field or property that stores the association. */ Class targetEntity() default void.class; }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy