// Path: src/main/java/com/getit/todoapp/domain/Todo.java
// @Entity
// @RooJavaBean
// @RooToString
// @RooJpaEntity
// @RooJson
// public class Todo {
//     private static final String CLASS_EXTENSION = "*.class";
// 
//     /**
//      */
//     @NotNull
//     private String name;
// 
//     /**
//      */
//     @NotNull
//     @Temporal(TemporalType.TIMESTAMP)
//     @DateTimeFormat(style = "M-")
//     private Date targetDate;
// 
//     /**
//      */
//     private Boolean isCompleted;
// 
//     /**
//      */
//     @Enumerated
//     private Priority priority;
//     
//     /**
//      */
//     @ManyToOne
//     private Userinfo userName;
// 
//     @Id
//     @GeneratedValue(strategy = GenerationType.AUTO)
//     @Column(name = "id")
//     private Long id;
// 
//     @Version
//     @Column(name = "version")
//     private Integer version;
// 
//     public String toJson() {
//         return new JSONSerializer().exclude(CLASS_EXTENSION).transform(new DateTransformer("MM/dd/yyyy"), Date.class).serialize(this);
//     }
// 
//     public String toJson(String[] fields) {
//         return new JSONSerializer().include(fields).exclude(CLASS_EXTENSION).serialize(this);
//     }
// 
//     public static Todo fromJsonToTodo(String json) {
//         return new JSONDeserializer<Todo>().use(null, Todo.class).deserialize(json);
//     }
// 
//     public static String toJsonArray(Collection<Todo> collection) {
//         return new JSONSerializer().exclude(CLASS_EXTENSION).transform(new DateTransformer("MM/dd/yyyy"), Date.class).serialize(collection);
//     }
// 
//     public static String toJsonArray(Collection<Todo> collection, String[] fields) {
//         return new JSONSerializer().include(fields).exclude(CLASS_EXTENSION).serialize(collection);
//     }
// 
//     public static Collection<Todo> fromJsonArrayToTodoes(String json) {
//         return new JSONDeserializer<List<Todo>>().use(null, ArrayList.class).use("values", Todo.class).deserialize(json);
//     }
// 
//     
// 
// 	public String toString() {
//         return ReflectionToStringBuilder.toString(this, ToStringStyle.SHORT_PREFIX_STYLE);
//     }
// 
// 	public Long getId() {
//         return this.id;
//     }
// 
// 	public void setId(Long id) {
//         this.id = id;
//     }
// 
// 	public Integer getVersion() {
//         return this.version;
//     }
// 
// 	public void setVersion(Integer version) {
//         this.version = version;
//     }
// 
// 	public String getName() {
//         return this.name;
//     }
// 
// 	public void setName(String name) {
//         this.name = name;
//     }
// 
// 	public Date getTargetDate() {
//         return this.targetDate;
//     }
// 
// 	public void setTargetDate(Date targetDate) {
//         this.targetDate = targetDate;
//     }
// 
// 	public Boolean getIsCompleted() {
//         return this.isCompleted;
//     }
// 
// 	public void setIsCompleted(Boolean isCompleted) {
//         this.isCompleted = isCompleted;
//     }
// 
// 	public Priority getPriority() {
//         return this.priority;
//     }
// 
// 	public void setPriority(Priority priority) {
//         this.priority = priority;
//     }
// 
// 	public Userinfo getUserName() {
//         return this.userName;
//     }
// 
// 	public void setUserName(Userinfo userName) {
//         this.userName = userName;
//     }
// }


import java.util.List;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.roo.addon.layers.repository.jpa.RooJpaRepository;
import org.springframework.stereotype.Repository;
import com.getit.todoapp.domain.Todo;
package com.getit.todoapp.repository;



@Repository
@RooJpaRepository(domainType = Todo.class)
public interface TodoRepository extends JpaSpecificationExecutor<Todo>, JpaRepository<Todo, Long> {
	
	@Query("select t from Todo t where t.userName.userName = ?1")
	List<Todo> findTodosByUserName(String userName);
	
	@Query("select t from Todo t where t.userName.userName = ?1 and t.id= ?2")
// Path: src/main/java/com/getit/todoapp/domain/Todo.java
// @Entity
// @RooJavaBean
// @RooToString
// @RooJpaEntity
// @RooJson
// public class Todo {
//     private static final String CLASS_EXTENSION = "*.class";
// 
//     /**
//      */
//     @NotNull
//     private String name;
// 
//     /**
//      */
//     @NotNull
//     @Temporal(TemporalType.TIMESTAMP)
//     @DateTimeFormat(style = "M-")
//     private Date targetDate;
// 
//     /**
//      */
//     private Boolean isCompleted;
// 
//     /**
//      */
//     @Enumerated
//     private Priority priority;
//     
//     /**
//      */
//     @ManyToOne
//     private Userinfo userName;
// 
//     @Id
//     @GeneratedValue(strategy = GenerationType.AUTO)
//     @Column(name = "id")
//     private Long id;
// 
//     @Version
//     @Column(name = "version")
//     private Integer version;
// 
//     public String toJson() {
//         return new JSONSerializer().exclude(CLASS_EXTENSION).transform(new DateTransformer("MM/dd/yyyy"), Date.class).serialize(this);
//     }
// 
//     public String toJson(String[] fields) {
//         return new JSONSerializer().include(fields).exclude(CLASS_EXTENSION).serialize(this);
//     }
// 
//     public static Todo fromJsonToTodo(String json) {
//         return new JSONDeserializer<Todo>().use(null, Todo.class).deserialize(json);
//     }
// 
//     public static String toJsonArray(Collection<Todo> collection) {
//         return new JSONSerializer().exclude(CLASS_EXTENSION).transform(new DateTransformer("MM/dd/yyyy"), Date.class).serialize(collection);
//     }
// 
//     public static String toJsonArray(Collection<Todo> collection, String[] fields) {
//         return new JSONSerializer().include(fields).exclude(CLASS_EXTENSION).serialize(collection);
//     }
// 
//     public static Collection<Todo> fromJsonArrayToTodoes(String json) {
//         return new JSONDeserializer<List<Todo>>().use(null, ArrayList.class).use("values", Todo.class).deserialize(json);
//     }
// 
//     
// 
// 	public String toString() {
//         return ReflectionToStringBuilder.toString(this, ToStringStyle.SHORT_PREFIX_STYLE);
//     }
// 
// 	public Long getId() {
//         return this.id;
//     }
// 
// 	public void setId(Long id) {
//         this.id = id;
//     }
// 
// 	public Integer getVersion() {
//         return this.version;
//     }
// 
// 	public void setVersion(Integer version) {
//         this.version = version;
//     }
// 
// 	public String getName() {
//         return this.name;
//     }
// 
// 	public void setName(String name) {
//         this.name = name;
//     }
// 
// 	public Date getTargetDate() {
//         return this.targetDate;
//     }
// 
// 	public void setTargetDate(Date targetDate) {
//         this.targetDate = targetDate;
//     }
// 
// 	public Boolean getIsCompleted() {
//         return this.isCompleted;
//     }
// 
// 	public void setIsCompleted(Boolean isCompleted) {
//         this.isCompleted = isCompleted;
//     }
// 
// 	public Priority getPriority() {
//         return this.priority;
//     }
// 
// 	public void setPriority(Priority priority) {
//         this.priority = priority;
//     }
// 
// 	public Userinfo getUserName() {
//         return this.userName;
//     }
// 
// 	public void setUserName(Userinfo userName) {
//         this.userName = userName;
//     }
// }


// Path: src/main/java/com/getit/todoapp/repository/TodoRepository.java
import java.util.List;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.roo.addon.layers.repository.jpa.RooJpaRepository;
import org.springframework.stereotype.Repository;
import com.getit.todoapp.domain.Todo;

package com.getit.todoapp.repository;



@Repository
@RooJpaRepository(domainType = Todo.class)
public interface TodoRepository extends JpaSpecificationExecutor<Todo>, JpaRepository<Todo, Long> {
	
	@Query("select t from Todo t where t.userName.userName = ?1")
	List<Todo> findTodosByUserName(String userName);
	
	@Query("select t from Todo t where t.userName.userName = ?1 and t.id= ?2")
	Todo findTodoByUserNameAndId(String userName,Long id);