Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用列表上的唯一合同<;项目>;?_Java_Jakarta Ee_Jpa - Fatal编程技术网

Java 如何使用列表上的唯一合同<;项目>;?

Java 如何使用列表上的唯一合同<;项目>;?,java,jakarta-ee,jpa,Java,Jakarta Ee,Jpa,我的实体看起来像 @Entity @Table(uniqueConstraints = @UniqueConstraint(columnNames = {"id", "service_version_id"})) public class MarketVersion extends AbstractVersion<MarketVersion> { @ManyToOne(cascade = CascadeType.ALL) priva

我的实体看起来像

@Entity

    @Table(uniqueConstraints = @UniqueConstraint(columnNames = {"id", "service_version_id"}))
    public class MarketVersion extends AbstractVersion<MarketVersion> {

        @ManyToOne(cascade = CascadeType.ALL)
        private Market market;

        @OneToOne
        private MarketVersion parentVersion;

        @OneToMany(cascade = CascadeType.MERGE)
        @JoinColumn(name = "services_id", referencedColumnName = "id")
        private List<ServiceVersion> services;
}
我确信,作为一个新手,我没有做正确的事情,但无法理解,什么 请告知


我想要一个新表,它对唯一性(市场版本id和服务版本id)有约束。

合同中的列名为
服务版本id
,而实体中的联接列则在列
服务版本id
上联接。
您需要在数据库中创建列
service\u version\u id
,或者根据您试图实现的目标将约束列重命名为
services\u id

您的数据库中是否有
service\u version\u id
列?不,如何创建?我认为您将此约束放在了错误的实体上,或者在市场上错误地使用OneToName版本,而该版本应为OneToOne类型。也就是说,假设您希望MarketVersion表中的service_id字段是ServiceVersion的外键,并且是唯一约束的一部分。您还没有显示实体的ID映射-可能ID字段将是pk,因此自动唯一,无需添加约束。我认为我需要的是唯一的(ID和服务),我该怎么做?
public class ServiceVersion extends AbstractVersion<ServiceVersion> {

    @ManyToOne(cascade = CascadeType.ALL)
    private Service service;
    @OneToOne
    private ServiceVersion parentVersion;
    @Column
    private String description;
    @Column(nullable = false)
    @Enumerated(EnumType.STRING)
    private ServiceImplementations implementation;
}
[hibernatetool] javax.persistence.PersistenceException: [PersistenceUnit: market] Unable to configure EntityManagerFactory
[hibernatetool] org.hibernate.AnnotationException: Unable to create unique key constraint (id, service_version_id) on table MarketVersion: service_version_id not found