2016-08-18 5 views
1
@Entity 
@Table(name="PROPERTY_VALUES") 
public class PropertyValuesData extends AbstractData { 

    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    @Column(name="VAL_ID") 
    private Long id; 

    @OneToOne(fetch = FetchType.EAGER, cascade= {CascadeType.PERSIST}) 
    @JoinColumn(name = "VAL_PROP_ID") 
    private PropertyData property; 

} 

객체를 지속 아무것도하지 않는, 존재() ID를 가지는 속성을 기존 포함하는 1) 나는 새로운 객체 PropertyValuesData을 만듭니다 - > 그 다음에는 새로 추가하기 만합니다. PropertyValuesData 2) 새 객체 인 PropertyValuesData을 새로 만든 다음 새 PropertyData을 삽입하고 싶습니다.JPA 삽입 객체는 그렇지 않은 경우가있는 경우

CascadeType.PERSIST을 추가하면 새 속성을 저장할 수 있지만 기존 속성의 경우 다시 삽입 해보십시오. 동일한 속성을 다시 삽입하지 않으려면 어떻게해야합니까? 추가

+0

는 방법을 보여 코드 몇 줄을 추가하십시오 지속에도 id로 데시벨 (에서 단순히 SELECT 필요한 PropertyData 100 %, 작업하려면 엔티티를 db/entityManager에 쓰고 있습니다 – Guenther

답변

0

한번에 추가 CascadeType.MERGE

또한, 작동하려면 PropertyData 요구를 위해 Managed가 (그래서 현재의 지속성 맥락에서, 그리고 분리)로 기억 해요. Detached 엔티티를 사용하는 경우 id을 db의 값으로 설정하면 INSERT이 아닌 UPDATE이됩니다.

은 당신이하려고하는 것처럼, 그것을 설정 한 다음 PropertyValuesData

+0

또한 MERGE도 시도하지만 도움이되지 않습니다 .. – lucas999

+0

@ lucas999 알림을 확인하십시오. 분리 된 엔티티를 확실히 사용하고 있습니다. – Antoniossss