Передача имени переменной в функцию

У меня была эта проблема, но я не хотел использовать аннотацию в своих сущностях, поэтому я решил, создав конструктор для моего класса, этот конструктор не должен ссылаться на сущности, которые ссылаются на эту сущность. Скажем, этот сценарий.

public class A{
   private int id;
   private String code;
   private String name;
   private List<B> bs;
}

public class B{
   private int id;
   private String code;
   private String name;
   private A a;
}

Если вы попытаетесь отправить в представление класс B или A с @ResponseBody, это может вызвать бесконечный цикл. Вы можете написать конструктор в своем классе и создать запрос с вашим entityManager следующим образом.

"select new A(id, code, name) from A"

Это класс с конструктором.

public class A{
   private int id;
   private String code;
   private String name;
   private List<B> bs;

   public A(){
   }

   public A(int id, String code, String name){
      this.id = id;
      this.code = code;
      this.name = name;
   }

}

Однако, есть некоторые сужения об этом решении, как вы можете видеть, в конструкторе я не ссылался на List bs, потому что Hibernate не разрешает его, по крайней мере, в версии 3.6.10.Final, поэтому, когда мне нужно показать оба объекта в представлении я делаю следующее.

public A getAById(int id); //THE A id

public List<B> getBsByAId(int idA); //the A id.

Другая проблема с этим решением состоит в том, что если вы добавляете или удаляете свойство, вы должны обновить свой конструктор и все ваши запросы.

0
задан Anuj 17 January 2019 в 07:57
поделиться

3 ответа

Вы можете добавить оператор, который проверяет числовой тип:

 summer<-function(func,df,col.name){
  x<-df
  mynames<-names(df)
  col.name1<-which(mynames==col.name)
  x<-func(df[col.name1])
  x
  }

summer (sum, iris, "Sepal.Width")

summer(sum,iris,"Sepal.Width")
[1] 458.6
0
ответ дан NelsonGon 17 January 2019 в 07:57
поделиться

Получить сумму по column_name. Вы можете получить доступ к данным столбца с помощью индекса (нет необходимости использовать имя столбца, я бы предпочел это) или имя столбца. Следующий код предоставляет сумму по столбцу 2, то есть "Sepal.Width" для набора данных iris.

test = function(func,data=iris,x){
  func(data[,x]) # Can access data using column index or name
}

test(sum,x=2) or test(sum,x="Sepal.Width")

Выход:

[1] 458.6
0
ответ дан Saurabh Chauhan 17 January 2019 в 07:57
поделиться

Не то, чтобы это было много смысла суммировать по одному элементу, вот код, который выполняется без ошибок:

test = function(func,data="file3",column_name,x=1){
  func(get(data)[[column_name]][x])
}

file3 <- iris
test(func = sum, column_name = "Sepal.Length")
[1] 5.1
0
ответ дан sindri_baldur 17 January 2019 в 07:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: