我正在尝试创建一些内容,以便可以将锻炼内容中的锻炼内容插入数据库中。问题是我想同时创建它们并存储练习,使用链接表。
此表名为Workout_Excercise,因此我可以在每次锻炼中存储多个练习。
问题是希望能够同时创建这些内容,但是execution_excercise需要尚未创建的execution_id。
我当前的代码插入的锻炼效果很好,现在我很好奇我也能够插入锻炼。
当前插入锻炼的代码:
前
$(".insertWorkout").on("click", function(){
if(localStorage.getItem('token') != null ) {
var token = localStorage.getItem('token');
}
else {
var token = null;
}
$.ajax({
url: '/project/restservices/workouts/insert',
type: 'POST',
beforeSend: function(xhr){
xhr.setRequestHeader('Authorization', 'Bearer ' + token);
},
data: {
titel: $(".workoutTitel").val() ,
beschrijving: $(".workoutBeschrijving").val(),
categorie_id: $(".categorieSelect").val(),
persoon_id: 1
},
success: function(response) {
if(response){
$(".workoutTitel").val("");
$(".workoutBeschrijving").val("");
$(".messageSpanSucces").html("Oefening invoeren gelukt");
}
else {
$(".messageSpanFail").html("Oefening invoeren mislukt");
}
}
});
});
WorkoutResource
@Path("insert")
@POST
@Produces("application/json")
@RolesAllowed("user")
public Response saveWorkout(@FormParam("titel") String titel, @FormParam("beschrijving") String beschrijving,
@FormParam("categorie_id") int categorie_id, @FormParam("persoon_id") int persoon_id) throws SQLException {
WorkoutService service = ServiceProvider.getWorkoutService();
boolean country = service.saveWorkout(titel, beschrijving, categorie_id, persoon_id);
return Response.ok(country).build();
}
workoutService
public boolean saveWorkout(String titel, String beschrijving, int categorie_id, int persoon_id) throws SQLException {
return WorkoutPostgresDao.saveWorkout(titel, beschrijving, categorie_id, persoon_id);
}
锻炼DAO
public boolean saveWorkout(String titel, String beschrijving, int categorie_id, int persoon_id) throws SQLException {
boolean result = false;
try (Connection con = super.getConnection()) {
String query = "INSERT INTO \"Workout\" VALUES(?,?,?,?)";
PreparedStatement pstmt = con.prepareStatement(query);
pstmt.setString(1, titel);
pstmt.setString(2, beschrijving);
pstmt.setInt(3, persoon_id);
pstmt.setInt(4, categorie_id);
pstmt.executeUpdate();
result = true;
} catch (SQLException sqle) {
sqle.printStackTrace();
}
return result;
}
答案 0 :(得分:0)
您可以使用以下方法来获取生成的密钥:
try (Connection con = super.getConnection()) {
String query = "INSERT INTO \"Workout\" VALUES(?,?,?,?)";
String query2 = "INSERT INTO Workout_exercise ... ";
PreparedStatement pstmt = con.prepareStatement(query,PreparedStatement.RETURN_GENERATED_KEYS);
pstmt.setString(1, titel);
pstmt.setString(2, beschrijving);
pstmt.setInt(3, persoon_id);
pstmt.setInt(4, categorie_id);
pstmt.executeUpdate();
result = true;
try (ResultSet rs = pstmt.getGeneratedKeys()) {
if (rs != null && rs.next()) {
workout_pkey = rs.getInt(1);
PreparedStatement pstmt2=con.prepareStatement(query2);
...
for (Workout_exercise ex: exs) {
pstmt2.setInt(1, workout_pkey);
...
pstmt2.addBatch();
}
pstmt2.executeBatch();
}
}
} catch (SQLException sqle) {
sqle.printStackTrace();
}