У меня есть два класса, которые выглядят так:
@PersistenceCapable(detachable="true")
@Inheritance(strategy=InheritanceStrategy.SUBCLASS_TABLE)
public abstract class BasicReference implements Serializable {
private static final long serialVersionUID = 1L;
@Persistent(column="last_modified")
private Date lastModified;
public abstract String getTitle();
public abstract void setTitle(String title);
public Date getLastModified() {
return lastModified;
}
public void setLastModified(Date lastModified) {
this.lastModified = lastModified;
}
}
@PersistenceCapable(table="X_MYENTRY",detachable="true")
@Inheritence(strategy=Inheritence.COMPLETE_TABLE)
public class MyEntry extends BasicReference {
private static final long serialVersionUID = 1L;
@Persistent(column="MYENTRY_ID")
private Integer id;
@Persistent
private String title;
@Override
public String getTitle() {
return title;
}
@Override
public void setTitle(String title) {
this.title = title;
}
public Integer getId() {
return id;
}
}
Моя схема базы данных выглядит следующим образом:
CREATE TABLE X_MYENTRY (
MYENTRY_ID int identity(1,1),
TITLE varchar(64),
lastModified datetime
)
У меня есть любое количество этих таблиц X_, каждаяс небольшими изменениями, в основном в допустимой длине некоторых полей.
Теперь, когда я пытаюсь выполнить запрос из диспетчера постоянства, я получаю сообщение об ошибке, что столбец X_MYENTRY_ID не может быть найден.Хотя я указал имя столбца как MYENTRY_ID.
На данный момент я даже не очень беспокоюсь о @PrimaryKey, я просто хочу иметь возможность вводить объекты.
Я пытался изменить аннотации для использования различных значений.Все, кроме MYENTRY_ID, выдаст ошибку, что указанный столбец не существует.Однако, если я использую MYENTRY_ID, я получаю X_MYENTRY_ID не существует.
Я попытался изменить столбец в базе данных, просто в качестве теста, и я получил другую ошибку: org.datanucleus.exceptions.NucleusUserException: Столбец "X_MYENTRY_ID" существует в таблице "X_MYENTRY" и содержит недопустимые метаданные.Существующий столбец: «
Моя таблица в SQL Server называется X_REFERENCE, а первичный ключ - REFERENCE_ID int identity (1,1). На данный момент я даже не беспокоюсь о @PrimaryKey, просто хочучтобы иметь возможность считывать данные. Однако, когда я пытаюсь сделать запрос через PersistenceManager, я получаю ошибку SQL для столбца X_REFERENCE_ID. Если я изменяю имя столбца в аннотациях на что-то другое («YREFERENCE_ID»), оноПохоже, что он подхватил это и соблюдает его. Но "REFERENCE_ID", похоже, автоматически заменяется на "X_REFERENCE_ID". Если я переименую столбец в моей тестовой базе данных в X_REFERENCE_ID, выдается ошибка, что REFERENCE_ID не может быть найден!
Любая помощь в получении этих идентификаторов будет принята с благодарностью.