Nano Hash - криптовалюты, майнинг, программирование

добавление объекта в список в игровой среде

Я новичок в игре, всякий раз, когда я использую list.add(Object) в список и печатаю размер списка, он остается 0 !!!

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

Модели:

    @Entity
    public class RegisteredUser extends Model {
public String name;
    @ManyToMany 
public List<Tutorial> contributedTutorials;

     public RegisteredUser(String name) {
     this.name = name;
     this.likeList = newArrayList<Tutorial>();
     this.save();
     }
     }

    @Entity
    public class Tutorial extends Model {
public  String Title;
    public int likeCount;
    public Tutorial(String title) {
    this.title = title;
    this.likeCount = 0;
    }

Контроллер: общедоступные учебные пособия расширяют контроллер { public static void likeTutorial() {

   if (session.get("RegisteredUserId") != null && session.get("tutID") != null ) {
    {   
        long uId = Long.parseLong(session.get("RegisteredUserId"));
        RegisteredUser user = RegisteredUser.findById(uId);
        long tId = Long.parseLong(session.get("tutID"));
        Tutorial tut = Tutorial.findById(tId);
        int x = tut.likeCount;
        x++;
        if (!(user.likeList.contains(tut))) 
            // to check that this user didn't like this tut before
        { 
            Tutorial.em().createQuery("update Tutorial set likeCount ="+ x +" where id=" +tId).executeUpdate();
            tut.refresh();
            user.updateLikeList(tut); // THIS IS NOT WORKING!!!
            renderText("You have successfully liked this Tutorial " + user.likeList.size());
        } 
        }
        renderText("Opps Something went Wrong!!");
    }
}
}

Вид :

     <a href="@{Tutorials.likeTutorial()}">Like </a>  
27.04.2012

  • Где код сбойной части, user.updateLikeList(tut); ? 27.04.2012
  • @OHAssan Я имел в виду, что нам нужно увидеть код user.updateLike, так как это то, что терпит неудачу 05.05.2012
  • @Pere Villega здесь общедоступно void updateLikeList(Tutorial t) { this.likeList.add(t); это.обновить(); } 05.05.2012

Ответы:


1

+ Вам не нужно вызывать this.save() и this.likeList = newArrayList<Tutorial>(); в конструкторе. На самом деле последнее синтаксически неверно.

+Передавать идентификатор учебника в качестве переменной сеанса очень неправильно. Вам нужно передать его как параметр GET в действие.

+Замените чек на:

// to check that this user didn't like this tut before
if (! user.likeList.contains(tut)) {
    // Tutorial.em().createQuery("update Tutorial set likeCount ="+ x +" where id=" +tId).executeUpdate();
    // tut.refresh();
    // user.updateLikeList(tut); // THIS IS NOT WORKING!!!
    tut.likeCount++;
    tut.save();

    // Since it's a ManyToMany relationship, you only need to add it to one list and the other will reflect properly if mappedBy properly
    user.likeList.add(tut); // note that the example you showed uses contributedTutorials not likeList
    user.save();

    renderText("You have successfully liked this Tutorial " + user.likeList.size());
} 
05.05.2012

2

Я сделал все настройки, которые вы упомянули выше

И сопоставление в модели RegisteredUser

@ManyToMany
public List<Tutorial> likeList;

и я добавил сопоставление в учебную модель

    @ManyToMany  
    public List<RegisteredUser> likersList;

и настроил метод в контроллере следующим образом

if (! user.likeList.contains(tut)) {

tut.likeCount++; 
//tut.likersList.add(user); // however this raised an error too! at the next line
tut.save();
//as for the likeCount update, it has worked perfectly, Thank You

// Since it's a ManyToMany relationship, you only need to add it to one list and the other will reflect properly if mappedBy properly 
//I have modified Model Tutorial as shown above and it didn't work too !
user.likeList.add(tut); 
user.save(); // this raised an error!! 

renderText("You have successfully liked this Tutorial " + user.likeList.size());

}

05.05.2012
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..