我在尝试在父表(DART\U ORDER)中插入1条记录,在连接到父表(DART\U ODATE)的子表中插入2条记录时遇到问题。这两个表由一对多对一关系链接,如下所示:
@Getter
@Setter
@ToString
@NoArgsConstructor
@Accessors(chain = true)
@Entity
@Table(
name = "DART_ORDER",
schema = Constants.ORACLE_DB_SCHEMA
)
public class OrderDAO implements Serializable {
@NotNull
private String WHY;
@NotNull
private String WHO;
@Id
@NotNull
private String ORDERID;
private String DESCRIPTION;
@NotNull
private String STATUS;
@NotNull
private String COUNTRY;
@NotNull
private String TYPE;
@NotNull
private String REPETITION;
private String REF_REFORDERID;
@OneToMany(mappedBy = "ORDER", cascade = CascadeType.ALL)
@OrderBy("DID ASC")
@ToString.Exclude
private List<OrderDateDAO> DATES;
@OneToMany(mappedBy = "ORDER", cascade = CascadeType.ALL)
@OrderBy("DID ASC")
@ToString.Exclude
private List<OrderDocDAO> DOCS;
}
@Getter
@Setter
@ToString
@NoArgsConstructor
@Accessors(chain = true)
@Entity
@Table(
name = "DART_ODATE",
schema = Constants.ORACLE_DB_SCHEMA,
indexes = @Index(
name = "PK_DART_ODATE",
columnList = "REF_ORDERID, ODTTYPE",
unique = true
)
)
@IdClass(OrderDateDAO.class)
public class OrderDateDAO implements Serializable {
@NotNull
private String WHY;
@NotNull
private String WHO;
@Id
@NotNull
private String REF_ORDERID;
@Id
@NotNull
private String ODTTYPE;
@NotNull
private LocalDate ODATE;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "REF_ORDERID", referencedColumnName = "ORDERID", insertable = false, updatable = false)
@ToString.Exclude
private OrderDAO ORDER;
}
当我尝试保存提供完整OrderDAO对象的记录时,会出现以下异常:
原因:java。sql。SQLException:oracle中的列索引无效。jdbc。驾驶员OraclePreparedStatement。oracle上的setFormOfUseInternal(OraclePreparedStatement.java:10470)。jdbc。驾驶员OraclePreparedStatement。oracle上的setFormOfUseInternal(OraclePreparedStatement.java:10451)。jdbc。驾驶员OraclePreparedStatement。oracle上的setString(OraclePreparedStatement.java:5240)。jdbc。驾驶员OraclePreparedStatementWrapper。com上的setString(OraclePreparedStatementWrapper.java:255)。扎克塞尔。希卡里。水塘HikariProxyPreparedStatement。org上的setString(HikariProxyPreparedStatement.java)。冬眠类型描述符。sql。VarcharTypeDescriptor$1。org上的doBind(VarcharTypeDescriptor.java:46)。冬眠类型描述符。sql。BasicBinder。bind(BasicBinder.java:73)位于org。冬眠类型AbstractStandardBasicType。位于org的nullSafeSet(AbstractStandardBasicType.java:276)。冬眠类型AbstractStandardBasicType。位于org的nullSafeSet(AbstractStandardBasicType.java:271)。冬眠类型组件类型。位于org的nullSafeSet(ComponentType.java:340)。冬眠持久化器。实体AbstractEntityPersister。Deterheoid(AbstractEntityPersister.java:3121)位于org。冬眠持久化器。实体AbstractEntityPersister。dehydrate(AbstractEntityPersister.java:3079)位于org。冬眠持久化器。实体AbstractEntityPersister。插入(AbstractEntityPersister.java:3372)。。。87个以上
通过为Hibernate的SQL语句启用日志,我注意到DART\u ODATE表的insert语句具有正确的?符号作为参数,但没有明显的原因,下面的日志显示传递了7个参数,而不是6个,其中1个似乎为空。
2022-05-03T13:27:24074跟踪[http-nio-8080-exec-5]o.h.t.d.s.BasicBinder:绑定参数[4]为[VARCHAR]-[null]
老实说,我不知道为什么它一直在考虑另外一个参数,因为DAO中唯一的附加映射集是JoinCol列...此外,我已经尝试将我的SpringBoot和Hibernate Validator版本升级到最新版本,但我仍然有错误。
你们有没有遇到过同样的问题?
非常感谢。
问候,A. M.
我终于明白了我的错误!
该问题与JoinColumn注释的错误使用有关。基本上,我删除了*OrderDateDAO“中的ORDER属性,并更改了parent DATES属性,如下所示:
@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name = "REF_ORDERID", referencedColumnName = "ORDERID")
@ToString.Exclude
private List<OrderDateDAO> DATES;
使用单向关系,INSERT语句就像一个符咒一样工作!:-)
我从API中得到了一个字符串列表,当我尝试插入Room Db时,我得到了一个错误- 参数的 这是它的桌子 我如何解决这个错误,或者有没有其他的方法让这个东西工作。
我升级了jboss 7到10,但有一个奇怪的错误,我不明白为什么 例外情况: 原因:java.sql.SQLException:oracle.jdbc.driver.OraclePreparedStatementWrapper.setLongInternal(OraclePreparedStatement.java:4901)处的oracle.jdbc.driver.OraclePreparedS
问题内容: 我可以在熊猫的特定列索引处插入列吗? 这会将列作为的最后一列,但是没有办法告诉它放在开始处吗? 问题答案: 参见文档:http : //pandas.pydata.org/pandas- docs/stable/genic/pandas.DataFrame.insert.html 使用loc = 0将在开头插入
UserRepository.java
我在将字符串数组插入mongo DB时遇到问题。在数组的特定大小之后,驱动程序挂起-不会抛出异常(超时或错误)。当我缩短长度时,一切正常。有人能解释这种奇怪的行为吗?很抱歉这个newbee问题,但我找不到一个现有的问题。 Mongo DB版本 非工作文档
有冬眠和MSSQL环境。我遇到了一个错误:“无法将值NULL插入到“comment_id”列中,表“CHT”。dbo。记者"点评";;列不允许空值。“插入失败。”Hibernate配置: comment_id列在db中具有标识属性:如果我使用db客户端进行插入: 它非常适合我。 Hibernate日志: SQL-插入REPORTER_COMMENTS(REPORTERID, COMMENT,COM