安慶有個姓戴的年輕人,年輕時行為不端,沒有規矩。
一天,他喝醉了酒回家,途中遇到了已故的表兄季生。戴生醉眼朦朧,一時間忘了季生已經死了,便問道:“你最近在哪兒呢?”季生說:“我已經成了鬼,你忘了嗎?”戴生這才恍然大悟,酒意也消散了,他問:“你在陰間都做些什麼事呀?”季生回答:“我最近在轉輪王殿下負責記錄工作。”戴生又問:“那肯定知道人間的禍福吧?”季生說:“這是我的職責,怎麼會不知道呢。只是事情太多太雜,不是特別重要的,我也記不住。三天前我偶然檢視名冊,還看到你的名字呢。”

戴生急切地問自己的名字在哪兒,季生說:“不敢騙你,你的名字在黑暗地獄裡。”戴生大驚失色,酒徹底醒了,苦苦哀求季生幫忙解脫。季生說:“這可不是我能辦到的,只有多做善事才能改變。不過你惡行累累,不是做點小善事就能挽回的。你一個窮秀才,能有多大能力?即使每天做一件善事,也得一年多才能抵消,現在已經晚了。但你要是從此改過自新,也許地獄裡還有出去的希望。”戴生聽了,淚流滿面,趴在地上苦苦哀求,等他抬起頭來,季生已經不見了。
戴生心情鬱悶地回到家。從此痛改前非,不敢再有絲毫差錯。以前,戴生曾與鄰居家的婦人有染,鄰居知道了但沒揭發,想抓個現行。戴生改過自新後,就與那婦人斷絕了關係。鄰居守了好幾次都沒抓到,很惱火。
一天,鄰居在田間遇到戴生,假裝和他聊天,騙他往枯井邊看,趁機把他推了下去。井很深,鄰居以為他必死無疑。沒想到戴生半夜甦醒過來,坐在井裡大聲呼救,卻沒人聽見。鄰居怕他沒死,第二天又去聽動靜,聽到了他的聲音,就往井裡扔石頭。戴生躲進井洞裡,不敢再出聲。鄰居知道他還活著,就用土填井,差點把井填滿。井洞裡一片漆黑,和地獄沒什麼兩樣。
洞裡沒有吃的,戴生覺得沒活路了。他趴著慢慢往裡爬,可三步之外都是水,沒地方可去,只好又回到原處坐下。一開始他覺得肚子餓,時間長了也就忘了。他想在地底下也沒法做善事,只能不停地念佛號。
這時,他看到磷火在洞裡漂浮,洞裡到處都是。他禱告說:“聽說青磷火都是冤死的鬼魂,我雖然還活著,但也很難再回去了,若能和你們說說話,也能解解悶。”只見那些磷火漸漸漂到水面上,磷火中都有一個人,身高大約是人的半身。
戴生問他們從哪兒來,他們回答:“這是古煤井。主人挖煤,震動了古墓,被龍飛相公引來地海的水,淹死了四十三個人。我們都是鬼啊。”

戴生問:“龍飛相公是誰呀?”他們說:“不知道。不過他是個文學士,現在是城隍的幕僚,他也可憐我們這些無辜的人,每隔三五天就施捨一次水粥。我們這些人在冷水裡泡著骨頭,不知哪天才能超生。你要是能再回到人間,希望能把我們的殘骨收集起來葬到義冢裡,那對我們這些在地下的鬼魂就是天大的恩惠了。”戴生說:“如果有萬分之一的可能回到人間,這有什麼難的。但我深陷地底,哪還有重見天日的希望呢!”
於是他教那些鬼魂唸佛,用小石塊代替念珠,記錄唸佛的數量。他也不知道時間的早晚,困了就睡,醒了就坐。忽然,他看到深處有盞燈籠,大家都高興地說:“龍飛相公來施捨食物了!”邀請戴生一起去。戴生怕水阻擋,眾人強行拉著他走,他感覺像在虛空中行走。走了半里多地,到了一個地方,眾人讓他自己走。路越來越往上,就像爬了幾丈高的臺階。
臺階盡頭,看到有房廊,堂上點著一支蠟燭,有胳膊那麼粗。戴生很久沒見到火光了,非常高興地走上前。上面坐著一位老者,穿著儒服,戴著儒巾。戴生停下腳步不敢再上前。老者已經看見他了,驚訝地問:“活人怎麼來了?”
戴生走上前,趴在地上陳述了自己的遭遇。老者說:“我是你的遠祖啊。”於是扶戴生起來,給他座位。老者自己說:“我叫戴潛,字龍飛。以前因為不肖子孫戴堂,勾結壞人,在祖墳旁邊打井,讓我在陰間不得安寧,所以我引來海水淹了那口井。現在他的後代怎麼樣了?”原來戴生近宗共有五支,戴堂是長支。
當初,縣裡的一個大戶人家賄賂戴堂,在他祖墳旁邊挖煤。其他幾個弟弟害怕他的勢力,沒人敢反對。不久,地下水突然湧出,挖煤的人都死在井裡。那些死者的家屬,一起打起了官司,戴堂和那個大戶人家都因此破產,戴堂的子孫甚至沒有立錐之地。戴生是戴堂弟弟的後代。他曾經聽先人說起過這件事,於是告訴了老者。

老者說:“這種不肖子孫,他們的後代怎麼能興旺呢!你既然來了,就不要荒廢了讀書。”於是給他酒飯吃,又在桌上放了書,都是明朝成化、弘治年間的制藝文章,強迫他研讀。還出題目讓他寫文章,就像老師教學生一樣。堂上的蠟燭一直亮著,不用剪燭花也不會熄滅。戴生困了就睡,仍不知道早晚。老者有時出去,就派一個僮僕服侍他。這樣過了很長時間,感覺有好幾年,但幸好沒什麼痛苦。只是沒有別的書可讀,只有一百首制藝文章,每首都讀了四千多遍。
有一天,老者對他說:“你的孽債已經受夠了,應該回到人間。我的墳墓挨著煤洞,陰風刺骨,你得志後,要把我遷到東原去。”戴生恭敬地答應了。老者叫來眾鬼,又把他送回原來的地方。眾鬼再次拜託他。戴生不知道怎麼出去。在此之前,家裡人找不到戴生,搜尋無果,他母親告到官府,抓了不少人,但也沒查到線索。
過了三四年,官府換了人,追查也放鬆了。戴生的妻子在家中呆不下去,改嫁了。正好村裡人又來治理那口舊井,進入洞裡發現了戴生,摸了摸他還沒死。大家都很驚訝,報告給戴生的家人。眾人把他抬回家,過了一天才緩過勁來,說出事情的經過。自從戴生掉進井裡,鄰居打死了他的妻子,被他岳父告到官府,審了一年多,鄰居只剩下皮包骨頭才被放回來。
鄰居聽說戴生復活了,非常害怕,逃走了。族人想追究鄰居的責任,戴生沒同意,他說以前的事是自己自找的,這是陰間的懲罰,和鄰居有什麼關係呢。鄰居見戴生沒有惡意,才敢回來。
井水乾了後,戴生僱人進洞收集舊時工人們的屍骨,分別裝好,買了棺材找了地方,把他們葬在一起。又查族譜,得知老者叫戴潛,字龍飛,戴生設祭品,祭奠在戴潛的墳前。
後來,學政聽說了他的奇遇,又欣賞他的文章,這科考試他按優等成績進入考場,鄉試中舉。回來後,他在東原買了墳地,把龍飛遷葬過去。每年春秋祭掃,從不間斷。