001: /**
002: * EasyBeans
003: * Copyright (C) 2007 Bull S.A.S.
004: * Contact: easybeans@ow2.org
005: *
006: * This library is free software; you can redistribute it and/or
007: * modify it under the terms of the GNU Lesser General Public
008: * License as published by the Free Software Foundation; either
009: * version 2.1 of the License, or any later version.
010: *
011: * This library is distributed in the hope that it will be useful,
012: * but WITHOUT ANY WARRANTY; without even the implied warranty of
013: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
014: * Lesser General Public License for more details.
015: *
016: * You should have received a copy of the GNU Lesser General Public
017: * License along with this library; if not, write to the Free Software
018: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
019: * USA
020: *
021: * --------------------------------------------------------------------------
022: * $Id: Author.java 1970 2007-10-16 11:49:25Z benoitf $
023: * --------------------------------------------------------------------------
024: */package org.ow2.easybeans.examples.ear;
025:
026: import java.util.ArrayList;
027: import java.util.Collection;
028:
029: import javax.persistence.CascadeType;
030: import javax.persistence.Entity;
031: import javax.persistence.FetchType;
032: import javax.persistence.GeneratedValue;
033: import javax.persistence.GenerationType;
034: import javax.persistence.Id;
035: import javax.persistence.NamedQuery;
036: import javax.persistence.OneToMany;
037:
038: /**
039: * Author of a book.
040: * @author Florent Benoit
041: */
042: @Entity
043: @NamedQuery(name="allAuthors",query="select o FROM Author o")
044: public class Author {
045:
046: /**
047: * Primary key (will be auto generated).
048: */
049: private long id;
050:
051: /**
052: * Name of the author.
053: */
054: private String name = null;
055:
056: /**
057: * List of books written by the author.
058: */
059: private Collection<Book> books;
060:
061: /**
062: * Default constructor.
063: */
064: public Author() {
065: books = new ArrayList<Book>();
066: }
067:
068: /**
069: * Constructor with a given author name.
070: * @param name - the name of the author
071: */
072: public Author(final String name) {
073: this ();
074: setName(name);
075: }
076:
077: /**
078: * Relation ship (do not using lazy mode).
079: * @return books written by this author
080: */
081: @OneToMany(mappedBy="author",fetch=FetchType.EAGER,cascade=CascadeType.ALL)
082: public Collection<Book> getBooks() {
083: return books;
084: }
085:
086: /**
087: * Add a book with a given title.
088: * @param title - the title of the book
089: */
090: public void addBook(final String title) {
091: Book livre = new Book();
092: livre.setTitle(title);
093: livre.setAuthor(this );
094: getBooks().add(livre);
095: }
096:
097: /**
098: * Sets the collection of books written by this author.
099: * @param books the list of the books
100: */
101: public void setBooks(final Collection<Book> books) {
102: this .books = books;
103: }
104:
105: /**
106: * @return name of the author
107: */
108: public String getName() {
109: return name;
110: }
111:
112: /**
113: * Sets the name of the author.
114: * @param name - the name of this author
115: */
116: public void setName(final String name) {
117: this .name = name;
118: }
119:
120: /**
121: * @return an id for this object (incremented automatically)
122: */
123: @Id
124: @GeneratedValue(strategy=GenerationType.AUTO)
125: public long getId() {
126: return this .id;
127: }
128:
129: /**
130: * Sets the id of this author object.
131: * @param id the given id of this author
132: */
133: public void setId(final long id) {
134: this .id = id;
135: }
136:
137: /**
138: * @return String representation of this entity object.
139: */
140: @Override
141: public String toString() {
142: StringBuilder sb = new StringBuilder(this .getClass().getName());
143: sb.append("[id=");
144: sb.append(getId());
145: sb.append(", name=");
146: sb.append(getName());
147: sb.append("]");
148: return sb.toString();
149: }
150: }
|