Я новичок, только что почти завершивший мой первый крупный проект 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