diff --git a/.classpath b/.classpath
index 01edbc4..e013f56 100644
--- a/.classpath
+++ b/.classpath
@@ -12,6 +12,7 @@
+
diff --git a/pom.xml b/pom.xml
index daf68c6..b55f960 100644
--- a/pom.xml
+++ b/pom.xml
@@ -24,10 +24,10 @@
com.h2database
h2
-
+
diff --git a/src/main/java/de/tilman/transactions/domain/Account.java b/src/main/java/de/tilman/transactions/domain/Account.java
index 19ebcc5..bcf0258 100644
--- a/src/main/java/de/tilman/transactions/domain/Account.java
+++ b/src/main/java/de/tilman/transactions/domain/Account.java
@@ -20,10 +20,10 @@ public class Account {
private String name;
- @ManyToOne
+ @ManyToOne(optional = false)
private User owner;
- @OneToMany
+ @OneToMany(mappedBy = "account")
private List categories;
@ManyToMany
diff --git a/src/main/java/de/tilman/transactions/domain/User.java b/src/main/java/de/tilman/transactions/domain/User.java
index 0c2528f..968810f 100644
--- a/src/main/java/de/tilman/transactions/domain/User.java
+++ b/src/main/java/de/tilman/transactions/domain/User.java
@@ -5,7 +5,9 @@ import java.util.List;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
-import javax.persistence.OneToMany;
+import javax.persistence.JoinColumn;
+import javax.persistence.JoinTable;
+import javax.persistence.ManyToMany;
@Entity
public class User {
@@ -16,9 +18,10 @@ public class User {
private String name;
- @OneToMany
+ @ManyToMany
+ @JoinTable(name = "account_user", joinColumns = @JoinColumn(name = "user_id", referencedColumnName = "id"), inverseJoinColumns = @JoinColumn(name = "account_id", referencedColumnName = "id"))
private List accounts;
-
+
public Long getId() {
return id;
@@ -37,4 +40,5 @@ public class User {
}
+
}
diff --git a/src/main/java/de/tilman/transactions/repository/AccountRepository.java b/src/main/java/de/tilman/transactions/repository/AccountRepository.java
new file mode 100644
index 0000000..1dbde79
--- /dev/null
+++ b/src/main/java/de/tilman/transactions/repository/AccountRepository.java
@@ -0,0 +1,8 @@
+package de.tilman.transactions.repository;
+
+import org.springframework.data.repository.CrudRepository;
+
+import de.tilman.transactions.domain.Account;
+
+public interface AccountRepository extends CrudRepository {
+}
diff --git a/src/main/java/de/tilman/transactions/repository/CategoryRepository.java b/src/main/java/de/tilman/transactions/repository/CategoryRepository.java
new file mode 100644
index 0000000..22161ea
--- /dev/null
+++ b/src/main/java/de/tilman/transactions/repository/CategoryRepository.java
@@ -0,0 +1,9 @@
+package de.tilman.transactions.repository;
+
+import org.springframework.data.repository.PagingAndSortingRepository;
+
+import de.tilman.transactions.domain.Category;
+
+public interface CategoryRepository extends PagingAndSortingRepository {
+
+}
diff --git a/src/main/java/de/tilman/transactions/repository/TransactionRepository.java b/src/main/java/de/tilman/transactions/repository/TransactionRepository.java
new file mode 100644
index 0000000..8d8a687
--- /dev/null
+++ b/src/main/java/de/tilman/transactions/repository/TransactionRepository.java
@@ -0,0 +1,9 @@
+package de.tilman.transactions.repository;
+
+import org.springframework.data.repository.PagingAndSortingRepository;
+
+import de.tilman.transactions.domain.Transaction;
+
+public interface TransactionRepository extends PagingAndSortingRepository {
+
+}
diff --git a/src/main/java/de/tilman/transactions/repository/UserRepository.java b/src/main/java/de/tilman/transactions/repository/UserRepository.java
new file mode 100644
index 0000000..07a26e8
--- /dev/null
+++ b/src/main/java/de/tilman/transactions/repository/UserRepository.java
@@ -0,0 +1,13 @@
+package de.tilman.transactions.repository;
+
+import org.springframework.data.repository.PagingAndSortingRepository;
+
+import de.tilman.transactions.domain.User;
+
+public interface UserRepository extends PagingAndSortingRepository {
+
+// @Override
+// @PreAuthorize("hasRole('ROLE_ADMIN')")
+// public Page findAll(Pageable pageable);
+
+}
\ No newline at end of file
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
new file mode 100644
index 0000000..78c3363
--- /dev/null
+++ b/src/main/resources/application.properties
@@ -0,0 +1,5 @@
+spring.datasource.platform=h2
+security.user.name=sa
+security.user.password=
+
+server.port=8080
diff --git a/src/main/resources/data-h2.sql b/src/main/resources/data-h2.sql
new file mode 100644
index 0000000..a1dbe46
--- /dev/null
+++ b/src/main/resources/data-h2.sql
@@ -0,0 +1,29 @@
+INSERT INTO User (id, name) VALUES (1, 'Tilman'), (2, 'Anica');
+INSERT INTO Account (id, name, owner_id) VALUES (1, 'Gemeinschaftskonto', 1), (2, 'Konto Tilman', 1);
+
+INSERT INTO Category (id, name, account_id, position) VALUES (1, 'Essen - Lebensmittel', 1, 2), (2, 'Einnahmen - Gehalt', 1, 1), (3, 'Essen - Arbeit', 1, 3), (4, 'Einnahmen - Gehalt', 2, 1), (5, 'Technik - Server und Hosting', 2, 2);
+
+
+INSERT INTO Account_User (account_id, user_id) VALUES (1, 1), (1, 2), (2, 1);
+
+INSERT INTO Transaction (id, amount, account_id, category_id, date, description, creditor_id) VALUES
+ (NULL, 1280.81, 1, 1, '2014-06-01', 'Gehalt', null),
+ (NULL, -2.21, 1, 2, '2014-06-10', 'Brot', null),
+ (NULL, -3.41, 1, 2, '2014-06-12', 'Gemüse', null),
+ (NULL, -7.81, 1, 3, '2014-06-19', 'Kantine', null),
+ (NULL, -4.81, 1, 3, '2014-06-18', 'Currywurst', 1),
+ (NULL, -4.50, 1, 3, '2014-06-19', 'Currywurst', null),
+ (NULL, -4.50, 1, 3, '2014-06-20', 'Currywurst', null),
+ (NULL, -4.50, 2, 3, '2014-06-20', 'Currywurst', null),
+ (NULL, -4.09, 1, 3, '2014-06-18', 'Currywurst-Frühstück', null),
+ (NULL, -4.90, 1, 3, '2014-06-18', 'Currywurst (Auslage Anica)', 2),
+ (NULL, -8.90, 1, 3, '2014-06-18', 'Curry beim Inder (Auslage Tilman)', 1),
+ (NULL, -12.00, 2, 3, '2014-06-18', 'Curry Thai', null),
+ (NULL, 1340.22, 2, 4, '2014-06-02', 'Gehalt Tilman', null),
+ (NULL, -12.90, 2, 5, '2014-06-16', 'Host Europe', null);
+
+
+-- add as many transactions as needed
+INSERT INTO Transaction (id, amount, account_id, category_id, date, description, creditor_id) VALUES (NULL, -1.50, 1, 2, CURRENT_TIMESTAMP(), 'Transaction', null); Commit;
+INSERT INTO Transaction (id, amount, account_id, category_id, date, description, creditor_id) VALUES (NULL, -1.50, 1, 3, CURRENT_TIMESTAMP(), 'Transaction', null); Commit;
+INSERT INTO Transaction (id, amount, account_id, category_id, date, description, creditor_id) VALUES (NULL, 1.50, 1, 4, CURRENT_TIMESTAMP()+1, 'LAST Transaction', null); Commit;