在java中使用JpaRepository插入一个新行

时间:2017-10-05 17:51:11

标签: java mysql spring spring-data-jpa

我是初学JPA的新手。我有以下要在表中插入的实体类:

@Entity
@Table(name = "test")
public class Test {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    private int id;

    @Column(name = "user")
    private String user;
}

我有一个名为test的空表。我有多个Test对象,我想将它插入到表中。为此,我创建了一个repo类:

@Repository("testRepo")
public interface TestRepo extends JpaRepository<Test, String> {
//write insert query    
    @Modifying
    @Query(//What insert query I should write)
    void insertData(@Param("id") String id);

}

我已搜索但只获取更新查询的选项。

4 个答案:

答案 0 :(得分:2)

继承自Parent接口.save(Entity entity)的方法CrudRepository可用于更新现有实体或创建新实体。

答案 1 :(得分:0)

您的存储库接口扩展自JpaRepository,它扩展自 CrudRepository 保存 saveAndFlush 方法可用作默认插入新行。

保存: 插入新行。您可以将行列表作为参数提供给此方法。在您的示例中,它应该像这样使用:

testRepo.save(testEntity);

testRepo.save(testEntities);

saveAndFlush: 仅插入新行并立即提交更改。 在您的示例中,它应该像这样使用:

testRepo.saveAndFlush(testEntity);

答案 2 :(得分:0)

("插入测试值(:id)",nativeQuery = true)

答案 3 :(得分:-1)

在您的服务类中执行类似下面的操作。 您不必编写单独的方法来保存实体。存储库的save方法可用于保存实体。

class TestDAO{

@Autowired
TestRepo testRepo;

public void saveTest(Test test) {
testRepo.save(test);
}