From: Roland Haeder <roland@mxchange.org>
Date: Mon, 12 Oct 2015 17:00:18 +0000 (+0200)
Subject: No more @OneToMany as this is confusing, better @OneToOne and easy named queries :)
X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=9c1c0622658f5912782ee949f63b191430bfead4;p=jbonuscard-lib.git

No more @OneToMany as this is confusing, better @OneToOne and easy named queries :)
---

diff --git a/src/org/mxchange/addressbook/model/addressbook/entry/AddressbookEntry.java b/src/org/mxchange/addressbook/model/addressbook/entry/AddressbookEntry.java
index 6984d6f..930fbb3 100644
--- a/src/org/mxchange/addressbook/model/addressbook/entry/AddressbookEntry.java
+++ b/src/org/mxchange/addressbook/model/addressbook/entry/AddressbookEntry.java
@@ -18,7 +18,6 @@ package org.mxchange.addressbook.model.addressbook.entry;
 
 import java.io.Serializable;
 import java.util.Calendar;
-import java.util.List;
 import org.mxchange.addressbook.model.addressbook.Addressbook;
 import org.mxchange.jcontacts.contact.Contact;
 import org.mxchange.jcontactsbusiness.BusinessContact;
@@ -92,21 +91,21 @@ public interface AddressbookEntry extends Serializable {
 	 * <p>
 	 * @return User who has added this entry
 	 */
-	public List<User> getAddressbookEntryUserAddedList ();
+	public User getAddressbookEntryUserSharer ();
 
 	/**
 	 * Setter for user who has added this entry to his/her addressbook
 	 * <p>
 	 * @param addressbookEntryUserAdded User who has added this entry
 	 */
-	public void setAddressbookEntryUserAddedList (final List<User> addressbookEntryUserAdded);
+	public void setAddressbookEntryUserSharer (final User addressbookEntryUserAdded);
 
 	/**
 	 * Getter for user who has initially created the address book entry
 	 * <p>
 	 * @return User who has created initially this address book entry
 	 */
-	public List<User> getAddressbookEntryUserOriginList ();
+	public User getAddressbookEntryUserOwner ();
 
 	/**
 	 * Setter for user who has initially created the address book entry
@@ -114,7 +113,7 @@ public interface AddressbookEntry extends Serializable {
 	 * @param addressbookEntryUserOrigin User who has created initially this
 	 * address book entry
 	 */
-	public void setAddressbookEntryUserOriginList (final List<User> addressbookEntryUserOrigin);
+	public void setAddressbookEntryUserOwner (final User addressbookEntryUserOrigin);
 
 	/**
 	 * Getter for address book
diff --git a/src/org/mxchange/addressbook/model/addressbook/entry/UserAddressbookEntry.java b/src/org/mxchange/addressbook/model/addressbook/entry/UserAddressbookEntry.java
index 4e39de3..4ad8484 100644
--- a/src/org/mxchange/addressbook/model/addressbook/entry/UserAddressbookEntry.java
+++ b/src/org/mxchange/addressbook/model/addressbook/entry/UserAddressbookEntry.java
@@ -17,7 +17,6 @@
 package org.mxchange.addressbook.model.addressbook.entry;
 
 import java.util.Calendar;
-import java.util.List;
 import javax.persistence.Basic;
 import javax.persistence.CascadeType;
 import javax.persistence.Column;
@@ -26,7 +25,8 @@ import javax.persistence.GeneratedValue;
 import javax.persistence.GenerationType;
 import javax.persistence.Id;
 import javax.persistence.JoinColumn;
-import javax.persistence.ManyToOne;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
 import javax.persistence.OneToOne;
 import javax.persistence.Table;
 import javax.persistence.Temporal;
@@ -47,6 +47,11 @@ import org.mxchange.jusercore.model.user.User;
  */
 @Entity (name = "addressbook_entries")
 @Table (name = "addressbook_entries")
+@NamedQueries (
+		@NamedQuery (
+				name = "AllAddressbookEntries",
+				query = "SELECT e FROM addressbook_entries AS e WHERE e.addressbookId = :addressbook AND (e.addressbookEntryUserOwner = :owner OR e.addressbookEntryUserSharer = :sharer) ORDER BY e.addressbookEntryId ASC")
+)
 public class UserAddressbookEntry implements AddressbookEntry, Comparable<AddressbookEntry> {
 
 	/**
@@ -55,12 +60,11 @@ public class UserAddressbookEntry implements AddressbookEntry, Comparable<Addres
 	private static final long serialVersionUID = 178_581_768_581_960L;
 
 	/**
-	 * Id number
+	 * Connection to table "business_contacts" (commercial contacts)
 	 */
-	@Id
-	@GeneratedValue (strategy = GenerationType.IDENTITY)
-	@Column (name = "entry_id", nullable = false, updatable = false)
-	private Long addressbookEntryId;
+	@JoinColumn (name = "entry_business_contact_id", updatable = false)
+	@OneToOne (targetEntity = CompanyContact.class, cascade = CascadeType.ALL)
+	private BusinessContact addressbookEntryBusinessContact;
 
 	/**
 	 * When this address book entry has been created
@@ -71,39 +75,40 @@ public class UserAddressbookEntry implements AddressbookEntry, Comparable<Addres
 	private Calendar addressbookEntryCreated;
 
 	/**
-	 * Connection to table "addressbooks"
+	 * Id number
 	 */
-	@JoinColumn (name = "addressbook_id", nullable = false, updatable = false)
-	@OneToOne (targetEntity = UserAddressbook.class, optional = false, cascade = CascadeType.ALL)
-	private Addressbook addressbookId;
+	@Id
+	@GeneratedValue (strategy = GenerationType.IDENTITY)
+	@Column (name = "entry_id", nullable = false, updatable = false)
+	private Long addressbookEntryId;
 
 	/**
-	 * Connection to table "users" (who has initially created this entry
+	 * Connection to table "contacts" (private contacts)
 	 */
-	@JoinColumn (name = "entry_origin_user_id", nullable = false, updatable = false)
-	@ManyToOne (targetEntity = LoginUser.class, optional = false, cascade = CascadeType.ALL)
-	private List<User> addressbookEntryUserOriginList;
+	@JoinColumn (name = "entry_private_contact_id", updatable = false)
+	@OneToOne (targetEntity = UserContact.class, cascade = CascadeType.ALL)
+	private Contact addressbookEntryPrivateContact;
 
 	/**
-	 * Connection to table "users" (who has added this entry)
+	 * Connection to table "users" (who has initially created this entry
 	 */
-	@JoinColumn (name = "entry_added_user_id", updatable = false)
-	@ManyToOne (targetEntity = LoginUser.class, cascade = CascadeType.ALL)
-	private List<User> addressbookEntryUserAddedList;
+	@JoinColumn (name = "entry_owner_user_id", nullable = false, updatable = false)
+	@OneToOne (targetEntity = LoginUser.class, optional = false, cascade = CascadeType.ALL)
+	private User addressbookEntryUserOwner;
 
 	/**
-	 * Connection to table "contacts" (private contacts)
+	 * Connection to table "users" (who has added this entry)
 	 */
-	@JoinColumn (name = "entry_private_contact_id", updatable = false)
-	@OneToOne (targetEntity = UserContact.class, cascade = CascadeType.ALL)
-	private Contact addressbookEntryPrivateContact;
+	@JoinColumn (name = "entry_sharer_user_id", updatable = false)
+	@OneToOne (targetEntity = LoginUser.class, cascade = CascadeType.ALL)
+	private User addressbookEntryUserSharer;
 
 	/**
-	 * Connection to table "business_contacts" (commercial contacts)
+	 * Connection to table "addressbooks"
 	 */
-	@JoinColumn (name = "entry_business_contact_id", updatable = false)
-	@OneToOne (targetEntity = CompanyContact.class, cascade = CascadeType.ALL)
-	private BusinessContact addressbookEntryBusinessContact;
+	@JoinColumn (name = "addressbook_id", nullable = false, updatable = false)
+	@OneToOne (targetEntity = UserAddressbook.class, optional = false, cascade = CascadeType.ALL)
+	private Addressbook addressbookId;
 
 	@Override
 	public int compareTo (final AddressbookEntry addressbookEntry) {
@@ -151,23 +156,23 @@ public class UserAddressbookEntry implements AddressbookEntry, Comparable<Addres
 	}
 
 	@Override
-	public List<User> getAddressbookEntryUserAddedList () {
-		return this.addressbookEntryUserAddedList;
+	public User getAddressbookEntryUserSharer () {
+		return this.addressbookEntryUserSharer;
 	}
 
 	@Override
-	public void setAddressbookEntryUserAddedList (final List<User> addressbookEntryUserAddedList) {
-		this.addressbookEntryUserAddedList = addressbookEntryUserAddedList;
+	public void setAddressbookEntryUserSharer (final User addressbookEntryUserSharer) {
+		this.addressbookEntryUserSharer = addressbookEntryUserSharer;
 	}
 
 	@Override
-	public List<User> getAddressbookEntryUserOriginList () {
-		return this.addressbookEntryUserOriginList;
+	public User getAddressbookEntryUserOwner () {
+		return this.addressbookEntryUserOwner;
 	}
 
 	@Override
-	public void setAddressbookEntryUserOriginList (final List<User> addressbookEntryUserOriginList) {
-		this.addressbookEntryUserOriginList = addressbookEntryUserOriginList;
+	public void setAddressbookEntryUserOwner (final User addressbookEntryUserOwner) {
+		this.addressbookEntryUserOwner = addressbookEntryUserOwner;
 	}
 
 	@Override