У меня есть две сущности A и B - A генерируется автоматически с использованием swagger-codegen-maven-plugin, и B создается мной и содержит отношение «многие к одному» с A. Автоматически сгенерированная (A) имеет4 атрибута, но соответствующая ему таблица в базе данных имеет дополнительный столбец id, который является справочным столбцом для внешнего ключа во втором объекте (B), который называется idA.
У меня естьчтобы сохранить объекты типа B в базе данных, и мне нужно также установить значение для idA. Несмотря на то, что значение правильно установлено, получая его от объекта типа A (взятого из базы данных), я получаю java.lang.IllegalArgumentException: объект не является экземпляром объявления класса. Я получаю значение, если у меня есть объект типа A, но если я назначу его объекту B, он выдаст мне эту ошибку.
Я покажу код:
@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2019-10-31T17:01:04.704+02:00")
public class A{
protected Integer accountId = null;
protected Integer range = null;
protected Integer address = null;
protected Integer agency = null;
protected Long id;
@Column(
name = "ID"
)
@GeneratedValue(
strategy = GenerationType.AUTO
)
public Long getId() {
return this.id;
}
public void setid(Long value) {
this.id = value;
}
@Entity
@Table(name = "STUDENTS")
public class B implements Serializable {
private long id;
private String name;
private long idA;
private long age;
@ManyToOne(targetEntity = A.class, cascade = {
CascadeType.ALL
})
@JoinColumn(name = "ID_A", referencedColumnName = "ID", nullable = false)
public long getIdA() {
return idA;
}
public void setIdA(long idA) {
this.idA= idA;
}
EntityManager em;
List<A> entitiesList = repositoryA.findAllEntities(); // method which gets all the entries from the table
for(int i = 0; i < entitiesList.size(); i++) {
B target = new B();
target.setName("Andrew");
target.setidA(entitiesList.get(i).getId()); // the value for the id is correctly taken from the database entry
em.persist(B); ---> line which gives error because of IllegalArgumentException
Как мне сохранить мой объект, если автоматически сгенерированный класс не имеет метода получения или установки для столбца, являющегося внешним ключом?