Java Spring Boot H2 сайт социальной сети в Heroku с PostgreSQL: «Исключение при оценке выражения SpringEL» - PullRequest
0 голосов
/ 08 мая 2019

Я новичок, только что почти завершивший мой первый крупный проект Uni, который является веб-сайтом в социальных сетях. Я использую Java, Spring Boot (MCV), Thymeleaf и Lombok. Моя локальная база данных H2. Одной из целей проекта было также подтолкнуть сайт к Heroku. Это где моя проблема началась. Работает локально, но в Heroku не может оценить размер массива «thumbUps». Это показывает, сколько пользователей понравилось какое-либо сообщение или изображение. Все остальное работает просто отлично.

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

"Страница ошибки Whitelabel У этого приложения нет явного отображения для / ошибка, так что вы видите это как запасной вариант.

вт. Май 07 23:48:29 EEST 2019 Произошла непредвиденная ошибка (тип = Внутренняя ошибка сервера, статус = 500). Оценка исключений Выражение SpringEL: "message.messageThumbUps.size ()" (шаблон: "profile" - строка 126, col 73) "

Синтаксис Thymeleaf правильный, и я также попробовал другую версию, которая также работает локально. Я полагаю, что при преобразовании базы данных из H2 в PostgreSQL может возникнуть проблема. Или, может быть, структура моего класса не оптимальна. Любые советы очень важны для того, чтобы мой сайт работал как на Heroku, так и локально. Большое спасибо.

Heroku ссылка: https://frozen -scrubland-76687.herokuapp.com /

Я пробовал:

th:text="${#lists.size(message.messageThumbUps)}"
th:text="${message.messageThumbUps.size()}"

Оба работают локально, но не в Heroku. Но я боюсь, что проблема заключается в другом. Согласно базе данных Heroku, данный ThumbUp не добавляется в базу данных. Локально это работает просто отлично и добавляется.

Объект Interactable (и Message, и Picture расширяют это, и проблема одинакова для обоих. Я включу только код, связанный с сообщениями, изображения в значительной степени одинаковы). Итак, Взаимодействующий:

@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public class Interactable extends AbstractPersistable<Long> {
}

Сущность сообщения:

@Entity
@Data
@NoArgsConstructor
@AllArgsConstructor

public class Message extends Interactable {

    @ManyToOne
    private UserAccount sender;
    @ManyToOne
    private UserAccount reciever;
    private LocalDateTime messageTimeStamp;
    @Column(columnDefinition = "TEXT", length = 2500)
    private String content;
    @OneToMany
    private List<ThumbUp> messageThumbUps = new ArrayList<>();
    @OneToMany
    private List<Comment> messageComments = new ArrayList<>();
}

Объект Комментарий (можно комментировать и лайкать сообщения):

@Entity
@Data
@NoArgsConstructor
@AllArgsConstructor

public class Comment extends AbstractPersistable<Long> {

    @ManyToOne
    private UserAccount writer;
    @ManyToOne
    private Interactable interactable;
    private LocalDateTime commentTimeStamp;
    @Column(columnDefinition = "TEXT", length = 2500)
    private String content;

}


Бит HTML:

<section th:each="message : ${recievedmessages}">
    <table style="position: absolute; right: 30px;">
        <tr>
            <th>Message like count:</th>
            <th th:text="${#lists.size(message.messageThumbUps)}"></th>
        </tr>
    </table>
</section>

Файл Procfile:

web: java $JAVA_OPTS -Dspring.profiles.active=production -Dserver.port=$PORT -jar target/*.jar

application-production.properties:

spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect

application.properties:

spring.datasource.url=jdbc:h2:file:./database;create=true
spring.jpa.hibernate.ddl-auto=update
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.H2Dialect

spring.jpa.show-sql=true

spring.resources.static-locations=file:src/main/resources/static/
spring.resources.cache.period=0

spring.servlet.multipart.max-file-size =-1
spring.servlet.multipart.max-request-size =-1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...