[英]using embedded id type twice in an entity
在我的spring-boot項目中,我對實體的ID字段有一個自定義類型。 我可以在@Embeddable
和@EmbeddedId
的幫助下使用該類型。
但是,當我想將另一個具有相同類型的字段添加到單個實體中時,會出現如下列映射異常:
Caused by: org.hibernate.MappingException: Repeated column in mapping for entity:
com.example.demo.CarEntity column: id (should be mapped with insert="false" update="false")
CarId類別:
@AllArgsConstructor
@NoArgsConstructor
@Getter
@Embeddable
public class CarId implements Serializable {
private String id;
@Override
public String toString() {
return id;
}
}
CarEntity類:
@AllArgsConstructor
@NoArgsConstructor
@Getter
@Entity
public class CarEntity {
@EmbeddedId
private CarId id;
private String name;
private CarId anotherId;
}
存儲庫類:
@Repository
public interface CarRepository extends JpaRepository<CarEntity, CarId> {
}
應用類別:
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
@Bean
CommandLineRunner runner(CarRepository repository) {
return args -> {
CarId carId = new CarId(UUID.randomUUID().toString());
String carName = "a car";
CarEntity carEntity = new CarEntity(carId, carName, carId);
repository.save(carEntity);
repository.findAll().forEach(carEntity1 -> {System.out.println(carEntity1.getId());});
};
}
}
如何將多個具有相同類型的字段添加到條目類中?
我發現的解決方案是按如下方式覆蓋anotherId
上的字段名稱:
@AllArgsConstructor
@NoArgsConstructor
@Getter
@Entity
public class CarEntity {
@EmbeddedId
private CarId id;
private String name;
@Embedded
@AttributeOverride(name="id", column = @Column(name = "anotherId"))
private CarId anotherId;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.