Сопоставление карты спящего режима как Java.util.Map - PullRequest
0 голосов
/ 26 августа 2018

Я пытаюсь отобразить ассоциацию гибернации как Java.util.Map.В таблице каналов есть столбец merchant_account_id. Таблица торговых счетов не ссылается на таблицу каналов.Он имеет только merchant_account_id, param_name и param_value.merchant_account_id может появляться более одного раза с разными значениями param_name.

Что я делаю не так?карта пуста, если только merchant_account_id не появится в таблице торгового счета только один раз.

@Entity
@Table(schema = "P", name = "CHANNEL")
public class ChannelEntity implements ProcessingChannel, PersistentEntity<Long> {

  private enum ParamName {
    SE_NUMBER,
    SUBMITTER_ID
  }

  @Id
  @Column(name = "CHANNEL_ID")
  private Long id;

  @OneToMany(targetEntity = MerchantAccountEntity.class, fetch = FetchType.EAGER)
  @JoinColumn(name = "MERCHANT_ACCOUNT_ID")
  @MapKey(name = "id.paramName")
  private Map<String, MerchantAccountEntity> merchantAccount = new HashMap<>();

  public Map<String, MerchantAccountEntity> getMerchantAccount() {
    return merchantAccount;
  }

  @Override
  public String getSeNumber() {
    return getStringValue(ParamName.SE_NUMBER);
  }

  @Override
  public String getSubmitterId() {
    return getStringValue(ParamName.SUBMITTER_ID);
  }

  private String getStringValue(ParamName paramName) {
    if (merchantAccount.containsKey(paramName.name())) {
      return merchantAccount.get(paramName.name()).getParamValue();
    }
    return null;
  }
}


@Entity
@Table(schema = "P", name = "MERCHANT_ACCOUNT")
public class MerchantAccountEntity implements MerchantAccount, PersistentEntity<String> {

  @EmbeddedId
  private MerchantAccountEntityPK id;

  @Column(name = "PARAM_VALUE")
  private String paramValue;

  @Override
  public String getId() {
    return id.getId();
  }

  @Override
  public String getParamName() {
    return id.getParamName();
  }

  @Override
  public String getParamValue() {
    return paramValue;
  }
} 

 @Embeddable
 public class MerchantAccountEntityPK implements Serializable {

      private static final long serialVersionUID = 4598402273070888330L;

      @Column(name = "MERCHANT_ACCOUNT_ID")
      private Long merchantAccountId;

      @Column(name = "PARAM_NAME")
      private String paramName;


      public String getId() {
        return merchantAccountId + "+" + paramName;
      }

      public String getParamName() {
        return paramName;
      }   
 } 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...