ORA-01722: неверный номер при использовании Hibernate - PullRequest
0 голосов
/ 17 января 2019

У меня есть объект Job, как показано ниже.

@Entity
@Getter
@Setter
@NoArgsConstructor
@Immutable
@ToString
@JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})
@Table(name = "JOB")
public class Job extends BaseEntity implements IEntity, IDto {

  @Id
  @Column(name = "JOB_ID", unique = true, nullable = false)
  private Long id;

  @Column(name = "PRINT_JOB_ID", length = 30)
  private String printJobId;

  @OneToMany(fetch = FetchType.LAZY)
  @JoinColumn(name = "PRINT_JOB_ID", nullable = false, insertable = false, updatable = false)
  private Set<PrintFile> printFileInfos = new HashSet<PrintFile>();
}

У меня также есть другой объект PrintFile.

@Entity
@Getter
@Setter
@NoArgsConstructor
@Immutable
@Table(name = "PRINT_FILE")
public class PrintFile implements Serializable {
  @Id
  @Column(name = "FILE_ID", unique = true, nullable = false, length = 50)
  private String fileId;

  @Column(name = "PRINT_JOB_ID", nullable = false, length = 30)
  private String printJobId;
}

Вот мои столы.

Job

JOB_ID                     NOT NULL NUMBER 
PRINT_JOB_ID                        VARCHAR2(30)  

Print_File

PRINT_JOB_ID               NOT NULL VARCHAR2(30)  
FILE_ID                    NOT NULL VARCHAR2(50) 

При попытке получить данные о задании с помощью API-интерфейса загрузки Sprint появляется сообщение об ошибке java.sql.SQLSyntaxErrorException: ORA-01722: invalid number. Кажется, все сопоставления типов данных верны, что еще могло пойти не так?

EDIT:

Сущность Job извлекается без проблем, когда я избавляюсь от соединения. то есть полное объявление printFileInfos в объекте Job. Это заставляет меня думать, что проблема либо в соединении, либо в сущности PrintFile.

1 Ответ

0 голосов
/ 18 января 2019

Я бы порекомендовал вам попробовать приведенный ниже код. После добавления атрибута referencedColumnName у меня это сработало.

   @OneToMany(fetch = FetchType.LAZY)
   @JoinColumn(name = "PRINT_JOB_ID", referencedColumnName = "PRINT_JOB_ID", nullable = false, insertable = false, updatable = false)
   private Set<PrintFile> printFileInfos = new HashSet<PrintFile>();
...