在Java中使用JpaRepository插入新行

8

我对Spring 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);

}

我已经搜索过,但只得到更新查询的选项。


这是Spring Data JPA(!= JPA API)。 - user8558216
5个回答

6

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


3
你的存储库接口继承自JpaRepository,它又继承自CrudRepository。可以使用save和saveAndFlush方法默认插入新行。
save:插入新行。你可以将行列表作为参数传递给此方法。在你的示例中应该像这样使用:
testRepo.save(testEntity);

或者

testRepo.save(testEntities);

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

testRepo.saveAndFlush(testEntity);

1
在您的服务类中,可以执行以下类似操作。您无需编写单独的方法来保存实体。可以使用存储库的保存方法来保存实体。
class TestDAO{

@Autowired
TestRepo testRepo;

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

0

("insert into table values (?1)",nativeQuery = true)

(“insert into table values (?1)”,nativeQuery = true)


0

我正在使用Spring Boot 2.7.5,使用JPA Repository,例如:

    @Query("INSERT INTO Planeta p (nome, clima, terreno) VALUES (:nome, :clima, :terreno)")
    Integer insertPlaneta(String nome, String clima, String terreno);

参数是根据参数方法使用:name_of_parameter传递的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接