Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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
Spring 映射实体中的重复列_Spring_Jpa_Spring Data Jpa - Fatal编程技术网

Spring 映射实体中的重复列

Spring 映射实体中的重复列,spring,jpa,spring-data-jpa,Spring,Jpa,Spring Data Jpa,我在我的项目中使用JPA嵌入式实体 我有一个可嵌入的类 @Embeddable public class Address { private String addressLine1; private String addressLine2; private String city; private String state; private String zipCode; public String getAddressLine1() { return addressLine1; }

我在我的项目中使用JPA嵌入式实体

我有一个可嵌入的类

@Embeddable
public class Address {

private String addressLine1;
private String addressLine2;
private String city;
private String state;
private String zipCode;

public String getAddressLine1() {
    return addressLine1;
}

public void setAddressLine1(String addressLine1) {
    this.addressLine1 = addressLine1;
}

public String getAddressLine2() {
    return addressLine2;
}

public void setAddressLine2(String addressLine2) {
    this.addressLine2 = addressLine2;
}

public String getCity() {
    return city;
}

public void setCity(String city) {
    this.city = city;
}

public String getState() {
    return state;
}

public void setState(String state) {
    this.state = state;
}

public String getZipCode() {
    return zipCode;
}

public void setZipCode(String zipCode) {
    this.zipCode = zipCode;
 }

}
我把这个类嵌入到这里

@Entity
public class Customer implements   
DomainObject{

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;

@Version
private Integer version;

private String firstName;
private String lastName;
private String email;
private String phoneNumber;

@Embedded
private Address billingAddress;

@Embedded
private Address shippingAddress;

@OneToOne
private User user;

@Override
public Integer getId() {
    return id;
}

@Override
public void setId(Integer id) {
    this.id = id;
}

public Integer getVersion() {
    return version;
}

public void setVersion(Integer version) {
    this.version = version;
}

public String getFirstName() {
    return firstName;
}

public void setFirstName(String firstName) {
    this.firstName = firstName;
}

public String getLastName() {
    return lastName;
}

public void setLastName(String lastName) {
    this.lastName = lastName;
}

public String getEmail() {
    return email;
}

public void setEmail(String email) {
    this.email = email;
}

public String getPhoneNumber() {
    return phoneNumber;
}

public void setPhoneNumber(String phoneNumber) {
    this.phoneNumber = phoneNumber;
}

public User getUser() {
    return user;
}

public void setUser(User user) {
    this.user = user;
}

public Address getBillingAddress() {
    return billingAddress;
}

public void setBillingAddress(Address billingAddress) {
    this.billingAddress = billingAddress;
}

public Address getShippingAddress() {
    return shippingAddress;
}

public void setShippingAddress(Address shippingAddress) {
    this.shippingAddress =     shippingAddress;
}
}
运行该项目后,我发现这是一个错误

映射实体中的重复列:
theo.tziomakas.udemy.domain.Customer列:账单\地址\行1(应使用insert=“false”update=“false”映射)

你可以克隆我的,如果你想和检查它自己

我也试过这个答案,但什么也没得到

更新

我通过使用AttributeOverride注释解决了这个错误

@Embedded
@AttributeOverrides({
        @AttributeOverride( name = "addressLine1",
        column = @Column(name = "billing_address_line1")
        ),
        @AttributeOverride( name = "addressLine2",
                column = @Column(name = "billing_address_line2")
        ),
        @AttributeOverride( name = "city",
                column = @Column(name = "billing_city")
        ),
        @AttributeOverride( name = "state",
                column = @Column(name = "billing_state")
        ),
        @AttributeOverride( name = "zipCode",
                column = @Column(name = "billing_zip_code")
        )
})
private Address billingAddress;

@Embedded
@AttributeOverrides({
        @AttributeOverride( name = "addressLine1",
                column = @Column(name = "shipping_address_line1")
        ),
        @AttributeOverride( name = "addressLine2",
                column = @Column(name = "shipping_address_line2")
        ),
        @AttributeOverride( name = "city",
                column = @Column(name = "shipping_city")
        ),
        @AttributeOverride( name = "state",
                column = @Column(name = "shipping_state")
        ),
        @AttributeOverride( name = "zipCode",
                column = @Column(name = "shipping_zip_code")
        )
})
private Address shippingAddress;

因此,我克隆了您的存储库,发现问题是因为您在
Customer.java
中嵌入了两次地址-
shippingAddress
billingAddress
。我建议使用
@AttributeOverride
注释来解决此问题。请参阅此

像这样更改实体字段

@Embedded
@AttributeOverrides({
    @AttributeOverride(name="addressLine1",column=@Column(name="billingAddressLine1")),
    @AttributeOverride(name="addressLine2",column=@Column(name="billingAddressLine2")),
    @AttributeOverride(name="city",column=@Column(name="billingCity")),
    @AttributeOverride(name="state",column=@Column(name="billingState")),
    @AttributeOverride(name="zipCode",column=@Column(name="billingZipCode")),
})
private Address billingAddress;

@Embedded
@AttributeOverrides({
    @AttributeOverride(name="addressLine1",column=@Column(name="shippingAddressLine1")),
    @AttributeOverride(name="addressLine2",column=@Column(name="shippingAddressLine2")),
    @AttributeOverride(name="city",column=@Column(name="shippingCity")),
    @AttributeOverride(name="state",column=@Column(name="shippingState")),
    @AttributeOverride(name="zipCode",column=@Column(name="shippingZipCode")),
})
private Address shippingAddress;

因此,我克隆了您的存储库,发现问题是因为您在
Customer.java
中嵌入了两次地址-
shippingAddress
billingAddress
。我建议使用
@AttributeOverride
注释来解决此问题。请参阅此

像这样更改实体字段

@Embedded
@AttributeOverrides({
    @AttributeOverride(name="addressLine1",column=@Column(name="billingAddressLine1")),
    @AttributeOverride(name="addressLine2",column=@Column(name="billingAddressLine2")),
    @AttributeOverride(name="city",column=@Column(name="billingCity")),
    @AttributeOverride(name="state",column=@Column(name="billingState")),
    @AttributeOverride(name="zipCode",column=@Column(name="billingZipCode")),
})
private Address billingAddress;

@Embedded
@AttributeOverrides({
    @AttributeOverride(name="addressLine1",column=@Column(name="shippingAddressLine1")),
    @AttributeOverride(name="addressLine2",column=@Column(name="shippingAddressLine2")),
    @AttributeOverride(name="city",column=@Column(name="shippingCity")),
    @AttributeOverride(name="state",column=@Column(name="shippingState")),
    @AttributeOverride(name="zipCode",column=@Column(name="shippingZipCode")),
})
private Address shippingAddress;

你能发布你的数据库模式吗?@Maruthi Adithya。这有必要吗?我现在不能。你如何在你的数据库中存储
billingAddress
?它是平面的还是JSON?如果是平面的,你给它分配了什么数据库列名?它与
Address
完全相同吗?@Maruthi Adithya列与地址相同。@Maruthi Adithya。但是现在我什么也不存储,因为我得到了所描述的异常。但是你可以克隆并运行该项目以获得更好的想法!你能发布你的数据库架构吗?@Maruthi Adithya。这是必要的吗?我现在不能。你如何在数据库中存储
billingAddress
?是平面的还是平面的JSON?同样,如果它是平面的,那么您为它指定的数据库列名是什么?它是否与
Address
完全相同?@Maruthi Adithya.tit是平面的。是的,列与Address相同。@Maruthi Adithya。但是现在我没有存储任何内容,因为我得到了描述的异常。但是您可以克隆并运行该项目以获得更好的想法!