2016-12-26 39 views
1

我继承人如何创建表,并定义了一套方法:如何使用类的setters方法将数据插入到JPA实体表中?

@Entity 
@Table(name = "Book") 
public class Book extends AbstractPersistable<Long> { 

@Column(name = "id") 
private Long id; 
@Column(name = "name") 
private String name; 

public void setContent (String name) { 
    this.name = name; 
} 
} 

从控制器,这是我怎么想设置内容:`

@RequestMapping("/addBook") 
@ResponseBody 
public String addBook(@RequestParam("name") String name) { 
    Book book = new Book(); 
    book.setContent(name); 
    return name;   
} 

当我设置从一个新的内容addBook页面使用名称参数值,内容显示在同一页面上。现在我试图做的是插入更多的内容到表中,但我不确定内容是否插入到表中。我需要向表中添加更多内容。 setContent方法是更新还是插入内容?如果有内容,我该如何查看表格?

+0

仅仅设定的数据将不会在DB的变化。你可以看看Spring Data JPA http://docs.spring.io/spring-data/jpa/docs/1.4.3.RELEASE/reference/html/repositories.html ...你可以要求spring数据库保存DB –

+0

@Neil中的对象感谢您的建议。我需要保存它,那就是我错过的。 – Gustav

回答

1

我假设你有一个春天的存储库执行CRUD操作类似

public interface BookRepository extends JpaRepository<Book ,Long> { 

} 

然后在您的控制器类,你有

@Autowired 
private BookRepository repo; 

现在在你的addBook方法可以节省书对象本方式

@RequestMapping("/addBook") 
@ResponseBody 
public String addBook(@RequestParam("name") String name) { 
    Book book = new Book(); 
    book.setContent(name); 
    repo.save(book); 
    return name;   
} 

你的书对象现在会我将添加到您的数据库

+0

@Sdi谢谢你的建议。除了将对象保存到回购站之外,我做了其他所有事情。现在我尝试了它,并使用thymeleaf模板将响应发送到名为book.html的视图页面。在控制器中,我是如何发送响应的: – Gustav

+0

但页面崩溃并说出这个:评估SpringEL表达式的异常:“book.name”。在IDE控制台中发现的错误为:org.springframework.expression.spel.SpelEvaluationException:EL1008E:在'sec.book.BookNames'类型的对象上找不到属性或字段'name'。什么可能是错的? – Gustav

+0

你有名字的getter方法吗?如果是私人的话? –

0

@Gustav - 你是否也在寻找类似的东西 - >什么是与传递的参数一起生成的SQL?

然后你可以使用的东西

@Bean 
    public Map<String, String> jpaProperties() { 
    Map<String, String> props = new HashMap<>(); 
    props.put("eclipselink.logging.level.sql", "FINE"); 
    props.put("eclipselink.logging.parameters", "true"); 
    return props; 
} 
+0

@Shubhasis我不想在任何其他方式在t他时刻,但肯定可能会在未来。我也会试试这个。感谢您的支持。 – Gustav

相关问题