Velvet Star Monitor

Standout celebrity highlights with iconic style.

updates

'Basic' attribute type should not be Persistence Entity

Writer Sebastian Wright

I am referencing an Entity in another Entity class and getting this error. Below is sample code. I have these classes in the persistence.xml as well.

What is causing this issue? I am using Spring data JPA and Hibernate.

import javax.persistence.*;
@Entity
@Table(name = "users", schema = "university")
public class UsersEntity { private long id; @JoinColumn(name = "address_id", nullable = false) private Address address; @Id @Column(name = "id") public long getId() { return id; } public void setId(long id) { this.id = id; } public Address getAddress() { return address; } public void setAddress(Address address) { this.address = address; }
}
import javax.persistence.*;
@Entity
@Table(name = "address", schema = "university")
public class AddressEntity { private long id; private String street; @Id @Column(name = "id") public long getId() { return id; } public void setId(long id) { this.id = id; } @Basic @Column(name = "street") public String getStreet() { return street; } public void setStreet(String street) { this.street = street; }
}
3

2 Answers

So try the following:

@Entity
@Table(name = "users", schema = "university")
public class UsersEntity { private Long id; private AddressEntity address; @Id @Column(name = "id") public Long getId() { return id; } public void setId(long id) { this.id = id; } @OneToOne @JoinColumn(name = "address_id", nullable = false) public AddressEntity getAddress() { return address; } public void setAddress(AddressEntity address) { this.address = address; }
}
@Entity
@Table(name = "address", schema = "university")
public class AddressEntity { private Long id; private String street; @Id @Column(name = "id") public Long getId() { return id; } public void setId(long id) { this.id = id; } @Column(name = "street") public String getStreet() { return street; } public void setStreet(String street) { this.street = street; }
}

Basically what I did was replace the long for Long. and added the @OneToOne I removed the @Basic since its optional. I believe with that it should just work

2

You missed the type of relationship between entities. E.g. you can define one-directional @OneToOne as

//...
public class UsersEntity {
//.. @OneToOne(mappedBy = "ugdArea", fetch = FetchType.LAZY) @JoinColumn(name = "address_id", nullable = false) private Address address;
//...
}

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy