次のように定義されたマッパーメソッドがあります
@InsertProvider(type = ActivityMapperSQLBuilder.class, method = "insertIntoActivityComment")
public int insertIntoActivityComment(@Param("activityComment")ActivityComment activityComment);
対応する SQLBuilder メソッドは次のように定義されます。
public String insertIntoActivityComment(Map<String, Object> params) {
ActivityComment activityComment = (ActivityComment) params
.get("activityComment");
params.put("fileIds", activityComment.getFileIds());
params.put("commentType",activityComment.getCommentType());
params.put("commentText",activityComment.getCommentText());
params.put("commentingUserId",activityComment.getCommentingUser().getId());
params.put("attachments",activityComment.getAttachments());
params.put("activityId",activityComment.getActivity().getId());
StringBuilder builder = new StringBuilder(
"insert into activityComment (commenttype, commenttext, commentdate, commentinguser_id, attachments, activity_id, fileids) VALUES "
+ " (#{commentType}, #{commentText}, now(), #{commentingUserId}, #{attachments}, #{activityId}, #{fileIds} )");
return builder.toString();
}
次のようにマッパーメソッドを呼び出すたびに
getActivityMapper().insertIntoActivityComment(activityComment);
次のエラーが発生しました。
error updating database. Cause: org.postgresql.util.PSQLException: Can't infer the SQL type to use for an instance of java.util.ArrayList. Use setObject() with an explicit Types value to specify the type to use.
エラーには、ActivityMapper.insertIntoActivityComment-Inline が関係している可能性があります パラメータの設定中にエラーが発生しました\n### SQL: insert into activityComment (commenttype, commenttext, commentdate, commentinguser_id, attachments, activity_id, fileids) VALUES (?, ?, now(), ?, ?, ?, ? )\n### 原因: org.postgresql.util.PSQLException: java.util.ArrayList のインスタンスに使用する SQL タイプを推測できません。使用するタイプを指定するには、setObject() を明示的な Types 値とともに使用します。"
私のActivityCommentオブジェクトの構造は
public class ActivityComment implements Serializable, IsSerializable {
private static final long serialVersionUID = 1L;
private int id;
private ActivityCommentType commentType;
private String commentText;
private Timestamp commentDate;
private Assignment activity;
private User commentingUser;
private String attachments;
private List<Integer> fileIds = new ArrayList<Integer>();
/*getters and setters*
}
PostgresqlデータベースにArrayListを挿入するのを手伝ってくれる人はいますか?