Java Hibernate OneTONE异常映射错误?

Java Hibernate OneTONE异常映射错误?,java,hibernate,one-to-one,Java,Hibernate,One To One,我有以下课程 @Entity @Table(name = "seek") public class Seek implements Serializable { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private int id; @NotNull @Valid @OneToOne(mappedBy="url") private Url url; } @En

我有以下课程

@Entity
@Table(name = "seek")
public class Seek implements  Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;

    @NotNull
    @Valid
    @OneToOne(mappedBy="url")
    private Url url;

}

@Entity
@Table(name = "url")
public class Url implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;

    @OneToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "idSeek", referencedColumnName = "id")
    private Seek seek;

}
我的Url表具有idSeek列,我的Seek表与Url表没有任何关系列

我收到的例外情况是:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'seekDao': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private org.hibernate.SessionFactory dao.hibernate.AbstractDao.sessionFactory; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in class path resource [configuration/HibernateConfig.class]: Invocation of init method failed; nested exception is org.hibernate.AnnotationException: Referenced property not a (One|Many)ToOne: model.Url.url in mappedBy of model.Seek.url
我的DAO刚刚扩展

public abstract class AbstractDao<PK extends Serializable, T> {

private final Class<T> persistentClass;

public AbstractDao() {
    this.persistentClass = (Class<T>) ((ParameterizedType) this.getClass().getGenericSuperclass()).getActualTypeArguments()[1];
}

@Autowired
private SessionFactory sessionFactory;

protected Session getSession() {
    return this.sessionFactory.getCurrentSession();
}

public T getByKey(PK key) {
    return (T) this.getSession().get(this.persistentClass, key);
}

public T getByColumn(String column, String value) {
    Criteria criteria = this.getSession().createCriteria(this.persistentClass);
    return (T) criteria.add(Restrictions.eq(column, value)).uniqueResult();
}

public void persist(T entity) {
    this.getSession().persist(entity);
}

public void delete(T entity) {
    this.getSession().delete(entity);
}

protected Criteria createEntityCriteria() {
    return this.getSession().createCriteria(this.persistentClass);
}

protected Query getQuery(String query) {
    return this.getSession().createQuery(query);
}
所以我需要手动获取insert id并将其放在我的url obj上?
谢谢

您的Seek类没有指向正确的
mappedBy
属性

@Entity
@Table(name = "seek")
public class Seek implements  Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;

    @NotNull
    @Valid
    @OneToOne(mappedBy="seek")
    private Url url;

}

Seek类未指向正确的
mappedBy
属性

@Entity
@Table(name = "seek")
public class Seek implements  Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;

    @NotNull
    @Valid
    @OneToOne(mappedBy="seek")
    private Url url;

}


尝试将
@OneToOne(mappedBy=“url”)
更改为
@OneToOne(mappedBy=“seek”)
尝试将
@OneToOne(mappedBy=“url”)
更改为
@OneToOne(mappedBy=“seek”)

我认为您需要在seek类中更改为
@OneToOne(mappedBy=“seek”)
,以获取url属性。可能
mappedBy=“seek”
?我在尝试保存模型时收到:WARN:SQL Error:1048,SQLState:23000 Error:Column'idSeek'不能为空。。。我的问题被修改了,在单词编辑后…我想您需要在seek类中更改为
@OneToOne(mappedBy=“seek”)
以获取url属性。可能
mappedBy=“seek”
?我在尝试保存模型时收到:WARN:SQL错误:1048,SQLState:23000错误:列“idSeek”不能为空。。。我的问题被修改了,在这个词被编辑后…你能再解释一下吗。您的更改可能会对问题产生什么影响?mappedBy属性仅对双向关系是必需的,可以在注释中忽略此元素…谢谢,我这样做了,但现在我还有其他疑问。。。您能帮忙吗?我在尝试保存模型时收到:WARN:SQL Error:1048,SQLState:23000 Error:Column'idSeek'不能为null。。。我的问题被修改了,在这个词被编辑后…你能再解释一下吗。您的更改可能会对问题产生什么影响?mappedBy属性仅对双向关系是必需的,可以在注释中忽略此元素…谢谢,我这样做了,但现在我还有其他疑问。。。您能帮忙吗?我在尝试保存模型时收到:WARN:SQL Error:1048,SQLState:23000 Error:Column'idSeek'不能为null。。。我的问题被修改了,在单词编辑后…谢谢,我这么做了,但现在我还有其他疑问。。。您能帮忙吗?我在尝试保存模型时收到:WARN:SQL Error:1048,SQLState:23000 Error:Column'idSeek'不能为null。。。我的问题在“编辑”一词之后被修改了……因为您使用的是双向关系,所以必须使用外部引用更新这两个实体。请看这里。谢谢,我这么做了,但现在我还有其他疑问。。。您能帮忙吗?我在尝试保存模型时收到:WARN:SQL Error:1048,SQLState:23000 Error:Column'idSeek'不能为null。。。我的问题在“编辑”一词之后被修改了……因为您使用的是双向关系,所以必须使用外部引用更新这两个实体。请看这里。
@Entity
@Table(name = "seek")
public class Seek implements  Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;

    @NotNull
    @Valid
    @OneToOne(mappedBy="seek")
    private Url url;

}