Spring / Hibernate Могу ли я использовать переопределения атрибутов в сущности @Data - PullRequest
0 голосов
/ 01 мая 2020

Я пытаюсь каскадно переопределить некоторые атрибуты, то есть в сущности

@Embedded
@AttributeOverrides({
  @AttributeOverride( name = "start", column = @Column(name = "override_start",nullable = true)),
  @AttributeOverride( name = "end", column = @Column(name = "override_end",nullable = true)),
  @AttributeOverride( name = "rot_x", column = @Column(name = "override_rotation_x",nullable = true)),
  @AttributeOverride( name = "rot_y", column = @Column(name = "override_rotation_y",nullable = true)),
  @AttributeOverride( name = "rot_z", column = @Column(name = "override_rotation_z",nullable = true)),
  @AttributeOverride( name = "pos_x", column = @Column(name = "override_position_x",nullable = true)),
  @AttributeOverride( name = "pos_y", column = @Column(name = "override_position_y",nullable = true)),
  @AttributeOverride( name = "pos_z", column = @Column(name = "override_position_z",nullable = true)),
})
private SceneInstanceOverrides overrides = new SceneInstanceOverrides();

Я создал компонент

public class SceneInstanceOverrides{

@Column(name = "start", nullable = false)
private Double start;
@Column(name = "end", nullable = false)
private Double end;

@Embedded
@AttributeOverrides({
  @AttributeOverride( name = "pos_x", column = @Column(name = "x",nullable = true)),
  @AttributeOverride( name = "pos_y", column = @Column(name = "y",nullable = true)),
  @AttributeOverride( name = "pos_z", column = @Column(name = "z",nullable = true)),
})
private NodeXYZ position;

@Embedded
@AttributeOverrides({
  @AttributeOverride( name = "rot_x", column = @Column(name = "x",nullable = true)),
  @AttributeOverride( name = "rot_y", column = @Column(name = "y",nullable = true)),
  @AttributeOverride( name = "rot_z", column = @Column(name = "z",nullable = true)),
})
private NodeXYZ rotation;
}

, который использует другой компонент

@Data
@Embeddable
@NoArgsConstructor
public class NodeXYZ {

    @Column(name = "x", nullable = true) 
    private Double x = 0.0;

    @Column(name = "y", nullable = true)
    private Double y = 0.0;

    @Column(name = "z", nullable = true)
    private Double z = 0.0; 

}

В основном я хочу, чтобы JSON был возвращен

sceneInstance:{
...
overrides: {
     start: 0,
    end: 0,
    position : {
       x: 0,
       y: 0,
       z: 0,
     }
  rotation : {
       x: 0,
       y: 0,
       z: 0,
  }

}
}

Но все данные находятся в объекте sceneInstance.

Я получаю ошибку

Caused by: org.hibernate.MappingException: Repeated column in mapping for entity: co.showhow.model.SceneInstance column: x (should be mapped with insert="false" update="false")

Но я хочу, чтобы они были вставляемыми и обновляемыми.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...