если вы хотите, чтобы и order_id, и order_line_id были составным ключом в сущности OrderLine, вам нужно сначала создать @Embeddable
:
@Embeddable
public class OrderLinePK implements Serializable {
private Integer orderId;
private Integer orderLineId;
}
и в своей сущности OrderLine вы измените его на
@EmbeddedId
private OrderLinePk pk;
@MapsId("orderId")
@ManyToOne
private Order order;
теперь каждый раз, когда вам нужно создать новую OrderLine, вы должны создать объект первичного ключа и назначить идентификатор следующим образом
OrderLine orderLine = new OrderLine();
OrderLinePK pk = new OrderLinePK();
pk.setOrderLineId(11);
orderLine.setPk(pk);
orderLine.setOrder(order);
, надеюсь, это поможет.
Нет, Вы не можете сделать этого. Как Вы сказали, , подобный вопрос задали, прежде - и я думал, что ответ был довольно четким, что Вы не могли сделать этого.
Вы можете создавать частного конструктора без параметров для структуры , но не в C#. Однако, даже если Вы делаете это, это действительно не помогает - потому что можно легко работать вокруг этого:
MyStruct[] tmp = new MyStruct[1];
MyStruct gotcha = tmp[0];
, Который будет значением по умолчанию MyStruct - "все обнуляет" значение - никогда не вызывая конструктора.
Вы могли легко добавить Проверить метод к своей структуре и вызову, что каждый раз Вы получили тот в качестве параметра по общему признанию.
Нет не может скрыть его. Структуры не могут переопределить нулевого конструктора аргумента, поэтому его видимость не может быть переопределена.
Вы не можете сделать структуру с частным конструктором без параметров или даже объявить конструктора без параметров. Необходимо было бы изменить его на класс. Структуры не, позволяют объявлять конструктора без параметров.
От эти Учебное руководство по Структурам на MSDN:
Структуры могут объявить конструкторов, но они должны взять параметры. Это - ошибка объявить конструктора (без параметров) по умолчанию для структуры. У участников структуры не может быть инициализаторов. Конструктор по умолчанию всегда предоставляется для инициализации участников структуры к их значениям по умолчанию.
От спецификация C# на MSDN:
11.3 Классов и различия в структуре
Структуры отличаются от классов несколькими важными способами:
Хорошо структура является буквально объявлением того, как память будет находиться.
, Даже когда Вы используете объект, указатель объектов объявленная IS, независимо от того, является ли это пустым.
причина, что Вы не можете скрыть конструктора, состоит в том, потому что структура требует, чтобы CLR мог создать ее как внутренне, она должна сделать это.
Вы могли преобразовать эту структуру в объект достигнуть этой задачи. Или используйте статический анализ, чтобы гарантировать, что он инициализируется перед использованием его?
struct point
{
int xpos;
int ypos;
}
Имеют Google для неизменных объектов, это, кажется, что Ваш после. Я полагаю, что они надеются добавлять эту опцию (но не в C# 4) на сам язык, потому что это - общее требование. Существует ли определенная потребность в структуре здесь?