我的应用程序使用两个架构和两个持久性单元。
我需要在第一个模式/ PU上映射的一个业务对象可以从第二个模式/ PU中映射的表中读取(并且只读取)数据。
所以我创建了一个映射到“foreign”表的类,只有我需要的字段,insertable和updatable设置为false(所以它应该是只读的)
@Entity
@Table( name = "NETHZ_USER", schema = "IDMANLIGHT" )
@Inheritance( strategy = InheritanceType.JOINED )
public class CMNUser extends PersistentObject
{
private static final long serialVersionUID = CmnSerialVersionUID.getSerialVersionUID();
@Column( insertable = false, updatable = false )
private String firstName;
@Column( insertable = false, updatable = false )
private String lastName;
@Column( insertable = false, updatable = false )
private String nethzPrimaryUsername;
// Empty constructor need by Hibernate/Envers
public CMNUser()
{
super();
}
+ getters and setters
并将其放在第一个PU下的persistence.xml中。
问题在于创建数据库我使用Hibernate工具(hbm2ddl),当它生成脚本以创建第一个PU的表时,它也会生成create table idmanlight.nethz_user
。当它尝试执行脚本时,会出现错误:“没有架构idmanlight的权限”(这是合法的)。
关键是hbm2ddl不应该生成表的创建(已经由第二个PU发生)。
有没有办法避免这种情况?
我希望我能够很好地解释这个问题......