【发布时间】:2020-03-30 15:26:46
【问题描述】:
我们有一个类Phone,它使用Roles,即。
@Entity
public class Phone{
@Id...
private Integer id;
@Column(name="role_id")
private IRole role;
...
界面
public interface IRole extends Serializable {
public abstract Integer getId();
...
因此,当我尝试在我的包中坚持 Phone 时,IRole 不再是抽象的,它已经是一个具体的实体。我不能直接使用具体类的原因是我们在项目中以不同的方式实现了Role。
当我尝试启动 Hibernate 时出现异常:
org.hibernate.tool.schema.spi.SchemaManagementException: Schema-validation: wrong column type encountered in column [role_id
] in table [phone]; found [int4 (Types#INTEGER)], but expecting [bytea (Types#VARBINARY)]
我认为IRole 会导致问题。它应该存储Role 的id - 这在我们所有的实现中都可用。如何告诉 Hibernate 它应该使用类型 Integer 而不是一些 interface 插值?
寻找一种适用于Postgres 以及MariaDB 的解决方案。
【问题讨论】:
-
在
Phone类中将role从IRole更改为Integer,然后修复引用。 -
是的,但我想保持对象的完整性,而不是开始处理我自己的对象。
-
也许这会有所帮助:stackoverflow.com/questions/3827494/…。它用于抽象类而不是接口
标签: java hibernate spring-data-jpa