package org.sculptor.examples.library.media.domain; import javax.persistence.Entity; import javax.persistence.Inheritance; import javax.persistence.InheritanceType; import javax.persistence.NamedQueries; import javax.persistence.NamedQuery; import javax.persistence.Table; import org.sculptor.examples.library.media.domain.MediaBase; import org.sculptor.examples.library.media.domain.PhysicalMedia; /** * * Entity representing Media. This class is responsible for the domain object * related business logic for Media. Properties and associations are implemented * in the generated base class * {@link org.sculptor.examples.library.media.domain.MediaBase}. */ @Entity(name = "Media") @Table(name = "MEDIA") @Inheritance(strategy = InheritanceType.JOINED) @NamedQueries({ @NamedQuery(name = "Media.findMediaByTitle", query = "select m from Media m, in(m.physicalMedia) pm where m.title = :title and pm.library.id = :libraryId") }) // removed abstract, because datanucleus has problems with abstract entities public class Media extends MediaBase { private static final long serialVersionUID = 1L; protected Media() { } public Media(String title) { super(title); } public boolean existsInLibrary(Long libraryId) { for (PhysicalMedia p : getPhysicalMedia()) { if (libraryId.equals(p.getLibrary().getId())) { return true; } } // none found return false; } }