在进行一些重构后,将一些类移动到不同的包中,我在使用条件构建器查询数据库时开始看到以下错误:
Date
如果我将包名更改回in.helpi.ironlegion.cerebro.db.hibernate.entity,它可以正常工作。
更新 我能够正确地获取个体实体。但是当我去查询引用其他实体的实体时,我得到了这个错误。例如:
java.lang.IllegalArgumentException: Parameter value [in.helpi.ironlegion.db.hibernate.entity.UserEntity@1863fc] did not match expected type [in.helpi.ironlegion.cerebro.db.hibernate.entity.UserEntity
如果我使用条件构建器在用户上查询它,请执行以下操作:
public class CommunityAccessEntity extends BaseEnity {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
private Long id;
@ManyToOne
@JoinColumn(name = "UserEntity_id")
private UserEntity userEntity;
...
}
我收到了上述错误。
有人也遇到过类似的问题..
答案 0 :(得分:1)
您必须在实体类中实现Serializable接口,因为它是实体类的拇指规则之一。
Java序列化与类名和包名紧密结合。您的数据与旧包实体一起存储在数据库中。现在您更改了软件包名称,系统将无法使用您的新软件包在DB中查找记录。这就是为什么当你恢复包时,它可以工作。
如果您正在使用基于xml的hbm配置,请检查hbm文件是否已在所有位置更新新包。