2014-10-31 3 views
0

я следующий кусок кода ..Hibernate @OneToOne Mapping

  1. работает нормально (staffTbl не получает выборки лениво) @OneToOne(fetch=FetchType.LAZY) @JoinColumns({@javax.persistence.JoinColumn(name="inst_id", referencedColumnName="inst_id", insertable=false, updatable=false), @javax.persistence.JoinColumn(name="staff_id", referencedColumnName="staff_id", insertable=false, updatable=false)}) private StaffTbl staffTbl;

  2. , но когда я сделал эту преходящую его всегда выборки нуль: @OneToOne(fetch=FetchType.LAZY) @JoinColumns({@javax.persistence.JoinColumn(name="inst_id", referencedColumnName="inst_id", insertable=false, updatable=false), @javax.persistence.JoinColumn(name="staff_id", referencedColumnName="staff_id", insertable=false, updatable=false)}) private transient StaffTbl staffTbl;

есть ли какая-то ошибка?

(я использую Hibernate 3, с JBoss 6.1)

+0

Это первый раз, когда я рассматриваю переходный процесс как ключевое слово, но тем не менее - разве это не то, чего вы ожидаете? Transient означает, что поле не должно иметь никакого соединения с базой данных. В чем проблема, которую вы пытаетесь решить? – Deltharis

ответ

0

Есть ли какая-то ошибка?

Если поле отмечено как переходное, это означает, что они не являются частью постоянного состояния объекта.

Решение:

изменение:

private StaffTbl staffTbl; 
+0

Я видел, что вы ответили на многие сложные вопросы весной. Пожалуйста, ответьте мне здесь http://stackoverflow.com/questions/28577325/how-to-run-2-tasks-separately –

0

transient как Java ключевого слова означает, что это поле должно быть проигнорировано, когда объект сериализации, так что вы, вероятно, видим последствия этого. Вопрос в том, чего вы пытаетесь достичь?

Если вы имели в виду, чтобы отметить staffTbl как переходного процесса в контексте Hibernate, вы должны аннотированный его @Transient, но вам придется установить его значение, то, так как он не будет поступать из базы данных, и вы можете ожидать большего обнуляет.

 Смежные вопросы

  • Нет связанных вопросов^_^