簡體   English   中英

在實體中兩次使用嵌入式ID類型

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM