По определению, поле с аннотацией @Transient будет игнорироваться ORM. В обе стороны: и в БД ничего не запишется, и из базы его не установить.
Но можно воспользоваться доступом на уровне
методов. Помимо аннотации @Column, надо поставить на геттере аннотацию @Access(AccessType.PROPERTY).
Так как поле - вычисляемое, довольно странно видеть
setCrn(Double crn) в классе. Это может смутить ORM, да и людей тоже. Я бы пошел еще дальше и переименовал
getCrn так, чтобы было понятно что это вычисляемое значение.
P.S. В современных БД есть такая вещь как (materialized) view - запрос или результат работы хранимки, к результатам которого можно обращаться как к таблице. Такой подход часто используется, у него есть определенные преимущества. Наверное, тут view будет избыточным решением, но для общего развития предлагаю посмотреть и в эту сторону.