通过反射访问字段xxx以获取持久属性时出错

Ced*_*Ced 6 hibernate jpa

我不知道怎么了 我的jpa映射似乎很好,但出现此错误:

通过反射访问持久性[main.java.entities.GPSCoordinates#user]字段时错误访问字段[private main.java.entities.User main.java.entities.GPSCoordinates.user]:main.java.entities.GPSCoordinates

Caused by: javax.persistence.PersistenceException: org.hibernate.property.access.spi.PropertyAccessException: Error accessing field [private main.java.entities.User main.java.entities.GPSCoordinates.user] by reflection for persistent property [main.java.entities.GPSCoordinates#user] : main.java.entities.GPSCoordinates@1
    at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1692)
    at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1602)
    at org.hibernate.jpa.internal.QueryImpl.getSingleResult(QueryImpl.java:560)
    at main.java.lookup.UserServiceImp.findByUuid
Run Code Online (Sandbox Code Playgroud)

用户类别:

@Entity
@Table
@NamedQuery(name = "User.findByUuid", query = "SELECT u FROM User u WHERE u.uuid=:uuid")
public class User implements Serializable, PictureHolder {
    //...
    @OneToOne(mappedBy = "user", fetch = FetchType.LAZY, cascade = CascadeType.PERSIST)
    private GPSCoordinates coordinates;

    public GPSCoordinates getCoordinates() { return coordinates;}
    public void setCoordinates(GPSCoordinates coordinates) {this.coordinates = coordinates;}
}
Run Code Online (Sandbox Code Playgroud)

GPSCoordinates类别:

@Entity
@Table(name="user_gps_coordinates")
public class GPSCoordinates implements Serializable{

    @Id
    @OneToOne
    @JoinColumn(name="user")
    private User user;

    public User getUser() { return user; }
    public void setUser(User user) {this.user = user;}
}
Run Code Online (Sandbox Code Playgroud)

小智 2

改变

@JoinColumn(name="user")
Run Code Online (Sandbox Code Playgroud)

@JoinColumn(name="column_name_of_user_id")
Run Code Online (Sandbox Code Playgroud)