我在@Multitenant中使用Eclipselink。除了@SequenceGenerator
之外,一切进展顺利@Entity
@NamedQuery(name = "Ville.findAll", query = "SELECT v FROM Ville v")
@Multitenant(MultitenantType.TABLE_PER_TENANT)
@TenantTableDiscriminator(type=TenantTableDiscriminatorType.SCHEMA, contextProperty="tenant-id")
public class Ville implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@SequenceGenerator(name = "VILLE_IDVILLE_GENERATOR", sequenceName = "SEQ_ID_VILLE", allocationSize = 1, schema = ? )
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "VILLE_IDVILLE_GENERATOR")
private Integer idville;
我的注释属性SequenceGenerator.schema的值有问题:
如果我没有指定它,它将在默认模式中查找并返回错误,因为它找不到序列
看起来像序列名称并不遵循每个架构命名约定,因此在每个租户/架构系统上
如何使用@Multitenant配置它以查找活动租户中的序列?
本主题how to set @SequenceGenerator schema in multitenancy中的是:
我找到的简单方法是在每个事务SET search_path TO tenant开始时更新架构以适应当前租户!我怎样才能做到这一点 ?我试过了:
EntityManager.cretQuery(" SET search_path TO tenant");
我得到了这个错误:查询不是以有效的标识符开头,必须是SELECT,UPDATE或DELETE FROM。
答案 0 :(得分:0)
使用createNativeQuery代替createQuery。