将数据同时插入到两个表中。 h2数据库

时间:2019-11-16 16:22:32

标签: java sql spring-boot

我在编写SQL查询时遇到问题。我想将数据插入到我的h2数据库中。 我的应用程序使用带有内存h2数据库的spring boot。

我的两个实体:

@Entity
public class Movie {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String title;
    @OneToMany(cascade = CascadeType.ALL)
    private List<ScreeningTime> screeningTime;
    private int screeningRoomId;
}

@Entity
public class ScreeningTime {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private long screeningTime;
}

我想使用SQL查询插入数据:

INSERT INTO PUBLIC.MOVIES (TITLE, SCREENING_TIME, SCREENING_ROOM_ID) 
VALUES ('Film1', 1573399800000, 1);

我的查询是错误的,但我不知道如何解决。你能帮我吗?

4 个答案:

答案 0 :(得分:0)

仅使用spring数据jpa

在项目中创建存储库。 帮助https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#reference

ScreeningTime time1=new ScreeningTime ();
time1.setScreeningTime("yourtime");

ScreeningTime time2=new ScreeningTime ();
time2.setScreeningTime("yourtime");

List<ScreeningTime> times=new ArrayList<>();
times.add(time1);
times.add(time2);

Movie m=new Movie();
m.setTitle("Film1");
m.setScreeningRoomId(1);
m.setScreeningTime(times);

repository.save(m);

答案 1 :(得分:0)

添加屏幕时间。您可以d看电影

 @Repository
    public interface ScreeningTime extends CrudRepository<ScreeningTime , Long> {

        @Modifying
        @Query(value = "insert into ScreeningTime (id,screeningTime) VALUES (:id,:screeningTime)", nativeQuery = true)
        @Transactional
        void saveScreen(@Param("id") String id, @Param("screeningTime") Long screeningTime);
    }

答案 2 :(得分:0)

如果您使用的是Spring Boot,那么您也可以仅在服务类中自动连接EntityManager并使用persist方法保存更改。请确保标记您的服务类方法@Transactional。另外,请确保在pom.xml文件中添加spring-data-jpa。

@自动连线 EntityManager em;

//在此处添加代码以填充电影对象

em.persist(电影);

希望这会有所帮助!

答案 3 :(得分:0)

我想将movieId字段添加到ScreeningTime实体。我的示例或实体属性应该改变什么?我应该添加一些注释吗?或归因?