diff --git a/src/main/java/org/hbp/mip/model/Article.java b/src/main/java/org/hbp/mip/model/Article.java
index 0b3a957d4a88af0cef5d74ee1fa321c65789b791..3ac1f8f4881f68acb2e479a3df1011a9a4a9dfa4 100644
--- a/src/main/java/org/hbp/mip/model/Article.java
+++ b/src/main/java/org/hbp/mip/model/Article.java
@@ -4,11 +4,10 @@
 
 package org.hbp.mip.model;
 
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
+import javax.persistence.*;
 import java.util.Date;
+import java.util.LinkedList;
+import java.util.List;
 
 @Entity
 public class Article {
@@ -23,9 +22,12 @@ public class Article {
     private Date publishedAt;
     private Date createdAt;
     private Date updatedAt;
-    /*private User createdBy;
+    @ManyToOne
+    private User createdBy;
+    @ManyToOne
     private User updatedBy;
-    private List<Tag> tags;*/
+    @ManyToMany
+    private List<Tag> tags;
 
     public Article() {
     }
@@ -102,7 +104,7 @@ public class Article {
         this.updatedAt = updatedAt;
     }
 
-    /*public User getCreatedBy() {
+    public User getCreatedBy() {
         return createdBy;
     }
 
@@ -131,5 +133,5 @@ public class Article {
             this.tags = new LinkedList<>();
         }
         this.tags.add(tag);
-    }*/
+    }
 }
diff --git a/src/main/java/org/hbp/mip/model/Chart.java b/src/main/java/org/hbp/mip/model/Chart.java
index ea24b36d80030b2d90fa9fdadf17135b2f25288c..382f9ac913a8b35500635bbb6b8b6193eedf976a 100644
--- a/src/main/java/org/hbp/mip/model/Chart.java
+++ b/src/main/java/org/hbp/mip/model/Chart.java
@@ -4,13 +4,18 @@
 
 package org.hbp.mip.model;
 
+import javax.persistence.*;
 import java.util.LinkedList;
 import java.util.List;
 
+@Entity
 public class Chart {
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
     private Long id;
     private String chartType;
     private String xAxis;
+    @ManyToMany
     private List<ChartConfigSet> chartConfigSets;
 
     public Chart() {
diff --git a/src/main/java/org/hbp/mip/model/ChartConfigSet.java b/src/main/java/org/hbp/mip/model/ChartConfigSet.java
index a5a1d0ed3f1f8783fa6c58f57677cdb0df5193ab..040f240c6fb4a14033c15f6c4271127b41328592 100644
--- a/src/main/java/org/hbp/mip/model/ChartConfigSet.java
+++ b/src/main/java/org/hbp/mip/model/ChartConfigSet.java
@@ -4,7 +4,15 @@
 
 package org.hbp.mip.model;
 
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+
+@Entity
 public class ChartConfigSet {
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
     private Long id;
     private String code;
     private String label;
diff --git a/src/main/java/org/hbp/mip/model/Dataset.java b/src/main/java/org/hbp/mip/model/Dataset.java
index fd9b66f8fc3d83f8d76f7b89eeef255b8922f735..38f042443a1ca3a8309ac814c129ee959b37aef7 100644
--- a/src/main/java/org/hbp/mip/model/Dataset.java
+++ b/src/main/java/org/hbp/mip/model/Dataset.java
@@ -4,17 +4,21 @@
 
 package org.hbp.mip.model;
 
+import javax.persistence.*;
 import java.util.Date;
-import java.util.LinkedList;
 import java.util.List;
-import java.util.Map;
 
+@Entity
 public class Dataset {
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
     private Long id;
     private String code;
     private Date date;
+    @ElementCollection
     private List<String> header;
-    private List<Map<String, List<Object>>> data;
+    //@ElementCollection
+    //private List<Map<String, List<Object>>> data;
 
     public Dataset() {
     }
@@ -51,7 +55,7 @@ public class Dataset {
         this.header = header;
     }
 
-    public List<Map<String, List<Object>>> getData() {
+    /*public List<Map<String, List<Object>>> getData() {
         return data;
     }
 
@@ -70,5 +74,5 @@ public class Dataset {
             this.data = new LinkedList<>();
         }
         this.data.add(map);
-    }
+    }*/
 }
diff --git a/src/main/java/org/hbp/mip/model/Filter.java b/src/main/java/org/hbp/mip/model/Filter.java
index d7af73d41ec6c74bbd5ed47a46c4ddabe3b58fdd..3c24be73fd83a07976aed39679219d753346cbbf 100644
--- a/src/main/java/org/hbp/mip/model/Filter.java
+++ b/src/main/java/org/hbp/mip/model/Filter.java
@@ -4,8 +4,14 @@
 
 package org.hbp.mip.model;
 
+import javax.persistence.*;
+
+@Entity
 public class Filter {
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
     private Long id;
+    @ManyToOne
     private Variable variable;
     private String operator;
 
diff --git a/src/main/java/org/hbp/mip/model/Group.java b/src/main/java/org/hbp/mip/model/Group.java
index 5247fa8367f9d672232bcb9e31c07eb7ce86b14a..4f9d54b29eb6d5685042e04ef41f6aef0e72793f 100644
--- a/src/main/java/org/hbp/mip/model/Group.java
+++ b/src/main/java/org/hbp/mip/model/Group.java
@@ -4,13 +4,18 @@
 
 package org.hbp.mip.model;
 
+import javax.persistence.*;
 import java.util.LinkedList;
 import java.util.List;
 
+@Entity
 public class Group {
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
     private Long id;
     private String code;
     private String label;
+    @ManyToMany
     private List<Group> groups;
 
     public Group() {
diff --git a/src/main/java/org/hbp/mip/model/Model.java b/src/main/java/org/hbp/mip/model/Model.java
index 0adf765f792a98fad5896e4fb710e1c39f3729ef..dbd119ebdb95ee6f0366f30ae97283ec13ad7336 100644
--- a/src/main/java/org/hbp/mip/model/Model.java
+++ b/src/main/java/org/hbp/mip/model/Model.java
@@ -4,20 +4,29 @@
 
 package org.hbp.mip.model;
 
+import javax.persistence.*;
 import java.util.Date;
 
+@Entity
 public class Model {
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
     private Long id;
     private String title;
     private String slug;
     private String description;
+    @ManyToOne
     private Query query;
+    @ManyToOne
     private Dataset dataset;
     private boolean valid;
+    @ManyToOne
     private Chart chart;
     private Date createdAt;
     private Date updatedAt;
+    @ManyToOne
     private User createdBy;
+    @ManyToOne
     private User updatedBy;
 
     public Model() {
diff --git a/src/main/java/org/hbp/mip/model/Query.java b/src/main/java/org/hbp/mip/model/Query.java
index e93f1416d0934dc3d3f0f40410efefea838d49bf..6d81619b9745527ac98c1e9abfac1419537d361e 100644
--- a/src/main/java/org/hbp/mip/model/Query.java
+++ b/src/main/java/org/hbp/mip/model/Query.java
@@ -4,14 +4,22 @@
 
 package org.hbp.mip.model;
 
+import javax.persistence.*;
 import java.util.LinkedList;
 import java.util.List;
 
+@Entity
 public class Query {
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
     private Long id;
+    @ManyToMany
     private List<Variable> variables;
+    @ManyToMany
     private List<Variable> covariables;
+    @ManyToMany
     private List<Variable> grouping;
+    @ManyToMany
     private List<Filter> filters;
     private String request;
 
diff --git a/src/main/java/org/hbp/mip/model/Tag.java b/src/main/java/org/hbp/mip/model/Tag.java
index 249720c8e06b421a0be3341576d851f8094171d0..48ad3e7079181bb90a21343ec60886ef0aa8c21b 100644
--- a/src/main/java/org/hbp/mip/model/Tag.java
+++ b/src/main/java/org/hbp/mip/model/Tag.java
@@ -4,7 +4,15 @@
 
 package org.hbp.mip.model;
 
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+
+@Entity
 public class Tag {
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
     private Long id;
     private String name;
 
diff --git a/src/main/java/org/hbp/mip/model/User.java b/src/main/java/org/hbp/mip/model/User.java
index b035d24be758cec38038cc28973e1a546031bbd9..67b0d38261e2de4dfd64ae3d3e38109eb88c76e8 100644
--- a/src/main/java/org/hbp/mip/model/User.java
+++ b/src/main/java/org/hbp/mip/model/User.java
@@ -4,10 +4,14 @@
 
 package org.hbp.mip.model;
 
+import javax.persistence.*;
 import java.util.LinkedList;
 import java.util.List;
 
+@Entity
 public class User {
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
     private Long id;
     private String fullname;
     private String username;
@@ -18,6 +22,7 @@ public class User {
     private String phone;
     private String birthday;
     private String gender;
+    @ElementCollection
     private List<String> languages;
     private String city;
     private String country;
@@ -26,6 +31,7 @@ public class User {
     private boolean isActive;
     private String apikey;
     private String team;
+    @ElementCollection
     private List<String> roles;
 
     public User() {
diff --git a/src/main/java/org/hbp/mip/model/Value.java b/src/main/java/org/hbp/mip/model/Value.java
index 91d5a06694d9895d3612f881a88d3a176a642e0d..f5afddc685fba8177d6085414a8b9d82b98a5fd3 100644
--- a/src/main/java/org/hbp/mip/model/Value.java
+++ b/src/main/java/org/hbp/mip/model/Value.java
@@ -4,7 +4,15 @@
 
 package org.hbp.mip.model;
 
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+
+@Entity
 public class Value {
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
     private Long id;
     private String code;
     private String label;
diff --git a/src/main/java/org/hbp/mip/model/Variable.java b/src/main/java/org/hbp/mip/model/Variable.java
index 684bb0ab475e0341ccfddf6f98c6dcf1b6c0ecd4..9439aabee953e5bba31489a9eb8c42884aaf431c 100644
--- a/src/main/java/org/hbp/mip/model/Variable.java
+++ b/src/main/java/org/hbp/mip/model/Variable.java
@@ -4,11 +4,16 @@
 
 package org.hbp.mip.model;
 
+import javax.persistence.*;
 import java.util.LinkedList;
 import java.util.List;
 
+@Entity
 public class Variable {
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
     private Long id;
+    @ManyToOne
     private Group group;
     private String code;
     private String label;
@@ -18,6 +23,7 @@ public class Variable {
     private boolean isGrouping;
     private boolean isCovariable;
     private boolean isFilter;
+    @ManyToMany
     private List<Value> values;
 
     public Variable() {
diff --git a/src/main/resources/hibernate.cfg.xml b/src/main/resources/hibernate.cfg.xml
index 616b46c2f77b435e4c22da19fc0b27051e40305e..e2960eb76e5b19cb0f853843c54ff8e12f76f3eb 100644
--- a/src/main/resources/hibernate.cfg.xml
+++ b/src/main/resources/hibernate.cfg.xml
@@ -18,6 +18,17 @@
         <property name="hibernate.hbm2ddl.auto">update</property>
 
         <mapping class="org.hbp.mip.model.Article"/>
+        <mapping class="org.hbp.mip.model.Chart"/>
+        <mapping class="org.hbp.mip.model.ChartConfigSet"/>
+        <mapping class="org.hbp.mip.model.Dataset"/>
+        <mapping class="org.hbp.mip.model.Model"/>
+        <mapping class="org.hbp.mip.model.Query"/>
+        <mapping class="org.hbp.mip.model.Tag"/>
+        <mapping class="org.hbp.mip.model.User"/>
+        <mapping class="org.hbp.mip.model.Value"/>
+        <mapping class="org.hbp.mip.model.Variable"/>
+        <mapping class="org.hbp.mip.model.Filter"/>
+        <mapping class="org.hbp.mip.model.Group"/>
 
     </session-factory>
 </hibernate-configuration>
\ No newline at end of file