Они не случайные символы. Это поля, объявленные соответствующим классом, который предположительно генерируется автоматически. Обычно (даже поощряется JLS) использовать $
в машинно-генерируемом коде.
Обратите внимание, что CGLIB - это библиотека генерации кода, которая, вероятно, и создает класс здесь.
Теперь, если вы думали, что смотрите на один из ваших классов, вы не ... вы смотрите на подкласс, созданный на лету Hibernate. Распечатайте foo.getClass().getName()
чтобы увидеть это. Если вы пытаетесь найти поля, объявленные в вашего класса, вам нужно пройти вверх по иерархии наследования, пока вы не достигнете своего класса. (Посмотрите, на что похожи сгенерированные классы, чтобы увидеть, как определить, когда вы добрались до своего реального.)