gpt4 book ai didi

java - 如何解决org.hibernate.MappingException?

转载 作者:行者123 更新时间:2023-11-29 06:07:07 26 4
gpt4 key购买 nike

我尝试让 hibernate 4 运行(JBoss AS 7 附带)并将我的应用程序部署为 EAR(persistence.xml iis 在 EAR 的 META-INF 中)。 hibernate 似乎运行。我有两个类,只要我不在另一个类中使用一个类,它就不会提示。

我有一个 session :

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "sessions")
public class Session {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
public Long dbid;
public String id;
public User user; // This is problematic!

public Session() {
}

public Session(User user) {
this.id = generateID();
this.user = user;
}

private String generateID() {
return Long.toString((long) (Math.random() * 1000000000.0));
}

@Override
public int hashCode() { [...] }

@Override
public boolean equals(Object obj) { [...] }
}

我有一个用户

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
public Long dbid;
public String name;
public String password;

public User() {
}

public User(String name, String password) {
this.name = name;
this.password = password;
}

@Override
public int hashCode() { [...] }

@Override
public boolean equals(Object obj) { [...] }
}

如果我启动服务器,它会提示:

Caused by: org.hibernate.MappingException: Could not determine type for: myproject.model.User, at table: sessions, for columns: [org.hibernate.mapping.Column(user)]
at org.hibernate.mapping.SimpleValue.getType(SimpleValue.java:303)
at org.hibernate.mapping.SimpleValue.isValid(SimpleValue.java:287)
at org.hibernate.mapping.Property.isValid(Property.java:215)
at org.hibernate.mapping.PersistentClass.validate(PersistentClass.java:466)
at org.hibernate.mapping.RootClass.validate(RootClass.java:267)
at org.hibernate.cfg.Configuration.validate(Configuration.java:1285)

如果我从 session 类中删除 public User user; 它不会提示。

这两个类都列在 persistence.xml 中,我已经尝试过:

  1. 生成 getter/setter 并将注解放在 getter 上
  2. 适当生成hashCode和equals

我还可以检查什么?可能是什么问题?

最佳答案

@ManyToOne 注释添加到您的 session 类中的用户成员(假设一个用户可以在您的数据库中有多个 session ......如果一个用户只有一个现存 session ,您可以使用 @OneToOne

关于java - 如何解决org.hibernate.MappingException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8184420/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com