Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用类中的setters方法将数据插入JPA实体表?_Java_Spring Data Jpa_H2 - Fatal编程技术网

Java 如何使用类中的setters方法将数据插入JPA实体表?

Java 如何使用类中的setters方法将数据插入JPA实体表?,java,spring-data-jpa,h2,Java,Spring Data Jpa,H2,下面是我如何创建表并定义set方法的: @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 = n

下面是我如何创建表并定义set方法的:

@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;
}
}

当我使用name参数值从addBook页面设置新内容时,内容显示在同一页面上。现在我想做的是向表中插入更多内容,但我不确定是否将内容插入表中。我需要在表中添加更多内容。setContent方法是否正在更新或插入内容?如果表中有内容,我该如何查看它呢?

我假设您有一个spring存储库来执行CRUD操作,比如

public interface BookRepository extends JpaRepository<Book ,Long> {

}
现在,在您的
addBook
方法中,您可以通过以下方式保存图书对象

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

您的book对象现在将添加到DB

@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;
}
@Bean
公共地图JPAPProperties(){
Map props=newhashmap();
put(“eclipseelink.logging.level.sql”、“FINE”);
放置(“eclipselink.logging.parameters”,“true”);
返回道具;
}

仅设置数据不会对数据库进行更改。您可以查看Spring数据JPA。。。您可以要求spring存储库将对象保存在DB@Neil谢谢你的建议。我需要保存它,而这正是我所缺少的。@A Sdi感谢您的建议。我做了所有其他的事情,除了把物品保存到回购协议中。现在我已经尝试过了,并使用thymeleaf模板将响应发送到名为book.html的查看页面。在控制器中,这就是我发送响应的方式:但是页面崩溃并说:异常评估SpringEL表达式:“book.name”。在IDE控制台中,在“sec.book.BookNames”类型的对象上找不到以下错误:org.springframework.expression.spel.SpelEvaluationException:EL1008E:属性或字段“name”。有什么问题吗?你有名字的getter方法吗?如果是,它是私有的吗?@A Sdi是的,我有一个getter方法返回this.name及其public。我真的需要这个方法吗?我想在视图文件中显示图书名称,并按照本页的说明进行操作。我使用这里显示的第一个方法发送响应,以及如何列出要查看文件的名称。是的,您必须拥有getter才能访问该书的名称。您可以将模型属性、请求参数或会话属性传递给您的视图,并且只有通过getter才能访问该值,在视图中,当您拥有${book.name}或${param.name}或${Session.myBookSessionAttribute.name}时,您实际上正在调用对象的getter方法,Thymeleaf首先检查对象并尝试识别其类型,然后调用getter显示其类型attributes@Shubhasis我现在不想寻找任何其他的方法,但将来肯定会有。我也会试试这个。谢谢你的支持。
@RequestMapping("/addBook")
@ResponseBody
public String addBook(@RequestParam("name") String name) {
    Book book = new Book();
    book.setContent(name);
    repo.save(book);
    return name;        
}
  @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;
}