У меня есть класс сущности, сопоставленный с существующей таблицей. В этой таблице нет первичного ключа. Вот таблица:JPA - Создать первичный ключ Transient
CREATE TABLE [dbo].[testtable](
[field1] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[field2] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[field3] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[field4] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[field5] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[field6] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
)
Я не могу делать какие-либо изменения в эту таблицу и я пытаюсь найти способ использовать JPA, установив первичный ключ только в памяти. Я знаю теоретически, что если я хочу иметь столбец только в памяти, я могу использовать временную аннотацию. Я хотел бы установить field1, field2, field3
как переходный первичный ключ, который укажет на существующие поля базы данных. Что-то вроде указателя inorder, чтобы иметь возможность получать значения существующих полей. Это возможно?
Вот класс сущности:
@Entity
@Table(name = "testtable")
public class TestJPA implements Serializable
{
@Column(name = "field1")
private String field1;
@Column(name = "field2")
private String field2;
@Column(name = "field3")
private String field3;
@Column(name = "field4")
private String field4;
@Column(name = "field5")
private String field5;
@Column(name = "field6")
private String field6;
}
Есть ли какой-либо набор полей в таблице, который однозначно идентифицирует запись? –
Ваше заявление о том, что вы не можете использовать JPA без PRIMARYKEY, полностью составлено: https://en.wikibooks.org/wiki/Java_Persistence/Identity_and_Sequision#No_Primary_Key. Пожалуйста, не утверждайте свои предположения, как они были фактом, большое спасибо – specializt
да. поле1 поле2 и поле3 могут однозначно идентифицировать запись. или вы имеете в виду, если есть столбец id (int)? – fnkbz